From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17000 invoked by alias); 4 Jun 2015 16:54:42 -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 16989 invoked by uid 89); 4 Jun 2015 16:54:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.3 required=5.0 tests=AWL,BAYES_60,KAM_ASCII_DIVIDERS,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,SPF_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mail-vn0-f53.google.com Received: from mail-vn0-f53.google.com (HELO mail-vn0-f53.google.com) (209.85.216.53) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 04 Jun 2015 16:54:40 +0000 Received: by vnbg1 with SMTP id g1so5837930vnb.3 for ; Thu, 04 Jun 2015 09:54:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=TYFgtiDtaxwZW/hhAXxRuN2zH97pawA86118Z07UYn0=; b=LXMciHh0WlSb1xLRT8NYCUth4noWTQIj56Qf1rjyZT1AZ6mMyDHvYxUhoG/hLvmffh Adr1682iSPW0m8nFftMdYHPWuBkugwoH01mvdE5YMpbq3L5WqYqLc371i1aj8yoz2Jt1 zFaz3YGxKV1jfwvsCfrcXsCB7PyYOljyOclpPd3iZlcRTLBu4zhG8ormO3Krs9WFm7AR skOAtO5+Q+pKZeJsvU0Kaf+XYiQGt/6qz2Tgd2nUzk7rQxQruG57SjA2G07L831VVv14 xnE2mTzQq3ZDHCbSIxUXLZpHC14zQntpS+8YqLFr3f4ZAPnxK5ld/6GK1GE+OsyEkWKo PasQ== X-Gm-Message-State: ALoCoQkC23JIJccl91DTzg+ZX/TTfxZTvMewEoTRMop2h9kQp3yPF1uBQKcz+SJynds9RyMqU9uX MIME-Version: 1.0 X-Received: by 10.52.138.11 with SMTP id qm11mr57609986vdb.40.1433436877585; Thu, 04 Jun 2015 09:54:37 -0700 (PDT) Received: by 10.52.231.35 with HTTP; Thu, 4 Jun 2015 09:54:37 -0700 (PDT) In-Reply-To: References: <20150529193552.GA52215@kam.mff.cuni.cz> <556C16B1.5080606@arm.com> <556F5F04.80603@redhat.com> Date: Thu, 04 Jun 2015 16:56:00 -0000 Message-ID: Subject: Re: [RFC][PATCH][X86_64] Eliminate PLT stubs for specified external functions via -fno-plt= From: Sriraman Tallam To: Richard Henderson Cc: Ramana Radhakrishnan , Jan Hubicka , "H.J. Lu" , Pedro Alves , Michael Matz , David Li , GCC Patches Content-Type: multipart/mixed; boundary=bcaec51b1511e64a8e0517b4072b X-IsSubscribed: yes X-SW-Source: 2015-06/txt/msg00428.txt.bz2 --bcaec51b1511e64a8e0517b4072b Content-Type: text/plain; charset=UTF-8 Content-length: 748 > Patch attached with those changes. Is this patch alright to commit? * c-family/c-common.c (noplt): New attribute. (handle_noplt_attribute): New handler. * calls.c (prepare_call_address): Check for noplt attribute. * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for noplt attribute. (ix86_expand_call): Ditto. (ix86_nopic_noplt_attribute_p): New function. (ix86_output_call_insn): Output indirect call for non-pic no plt calls. * doc/extend.texi (noplt): Document new attribute. * doc/invoke.texi: Document new attribute. * testsuite/gcc.target/i386/noplt-1.c: New test. * testsuite/gcc.target/i386/noplt-2.c: New test. * testsuite/gcc.target/i386/noplt-3.c: New test. * testsuite/gcc.target/i386/noplt-4.c: New test. Thanks Sri --bcaec51b1511e64a8e0517b4072b Content-Type: text/plain; charset=US-ASCII; name="noplt_attrib_patch_new.txt" Content-Disposition: attachment; filename="noplt_attrib_patch_new.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iaifa8s71 Content-length: 14632 CSogYy1mYW1pbHkvYy1jb21tb24uYyAobm9wbHQpOiBOZXcgYXR0cmlidXRl LgoJKGhhbmRsZV9ub3BsdF9hdHRyaWJ1dGUpOiBOZXcgaGFuZGxlci4KCSog Y2FsbHMuYyAocHJlcGFyZV9jYWxsX2FkZHJlc3MpOiBDaGVjayBmb3Igbm9w bHQKCWF0dHJpYnV0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Z1 bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogQ2hlY2sKCWZvciBub3BsdCBhdHRy aWJ1dGUuCgkoaXg4Nl9leHBhbmRfY2FsbCk6ICBEaXR0by4KCShpeDg2X25v cGljX25vcGx0X2F0dHJpYnV0ZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGl4ODZf b3V0cHV0X2NhbGxfaW5zbik6IE91dHB1dCBpbmRpcmVjdCBjYWxsIGZvciBu b24tcGljCglubyBwbHQgY2FsbHMuCgkqIGRvYy9leHRlbmQudGV4aSAobm9w bHQpOiBEb2N1bWVudCBuZXcgYXR0cmlidXRlLgoJKiBkb2MvaW52b2tlLnRl eGk6IERvY3VtZW50IG5ldyBhdHRyaWJ1dGUuCgkqIHRlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvbm9wbHQtMS5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9ub3BsdC0yLmM6IE5ldyB0ZXN0LgoJKiB0ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L25vcGx0LTMuYzogTmV3IHRlc3QuCgkq IHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQtNC5jOiBOZXcgdGVz dC4KClRoaXMgcGF0Y2ggZG9lcyB0d28gdGhpbmdzOgoKKiBBZGRzIG5ldyBn ZW5lcmljIGZ1bmN0aW9uIGF0dHJpYnV0ZSAibm9wbHQiIHRoYXQgaXMgc2lt aWxhciBpbiBmdW5jdGlvbmFsaXR5CiAgdG8gLWZuby1wbHQgZXhjZXB0IHRo YXQgaXQgYXBwbGllcyBvbmx5IHRvIGNhbGxzIHRvIGZ1bmN0aW9ucyB0aGF0 IGFyZSBtYXJrZWQKICB3aXRoIHRoaXMgYXR0cmlidXRlLgoqIEZvciB4ODZf NjQsIGl0IG1ha2VzIC1mbm8tcGx0KGFuZCB0aGUgYXR0cmlidXRlKSBhbHNv IHdvcmsgZm9yIG5vbi1QSUMgY29kZSBieQogIGRpcmVjdGx5IGdlbmVyYXRp bmcgYW4gaW5kaXJlY3QgY2FsbCB2aWEgYSBHT1QgZW50cnkuCgpJbmRleDog Yy1mYW1pbHkvYy1jb21tb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBjLWZhbWlseS9jLWNvbW1vbi5jCShyZXZpc2lvbiAyMjM3MjApCisrKyBj LWZhbWlseS9jLWNvbW1vbi5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNiAr MzU3LDcgQEAgc3RhdGljIHRyZWUgaGFuZGxlX21vZGVfYXR0cmlidXRlICh0 cmVlICosIHRyZWUsIHQKIHN0YXRpYyB0cmVlIGhhbmRsZV9zZWN0aW9uX2F0 dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CiBz dGF0aWMgdHJlZSBoYW5kbGVfYWxpZ25lZF9hdHRyaWJ1dGUgKHRyZWUgKiwg dHJlZSwgdHJlZSwgaW50LCBib29sICopOwogc3RhdGljIHRyZWUgaGFuZGxl X3dlYWtfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9v bCAqKSA7CitzdGF0aWMgdHJlZSBoYW5kbGVfbm9wbHRfYXR0cmlidXRlICh0 cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKSA7CiBzdGF0aWMgdHJl ZSBoYW5kbGVfYWxpYXNfaWZ1bmNfYXR0cmlidXRlIChib29sLCB0cmVlICos IHRyZWUsIHRyZWUsIGJvb2wgKik7CiBzdGF0aWMgdHJlZSBoYW5kbGVfaWZ1 bmNfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAq KTsKIHN0YXRpYyB0cmVlIGhhbmRsZV9hbGlhc19hdHRyaWJ1dGUgKHRyZWUg KiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwpAQCAtNzA2LDYgKzcwNyw4 IEBAIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBjX2NvbW1vbl9hdHRy aWJ1dGVfdGFiCiAJCQkgICAgICBoYW5kbGVfYWxpZ25lZF9hdHRyaWJ1dGUs IGZhbHNlIH0sCiAgIHsgIndlYWsiLCAgICAgICAgICAgICAgICAgICAwLCAw LCB0cnVlLCAgZmFsc2UsIGZhbHNlLAogCQkJICAgICAgaGFuZGxlX3dlYWtf YXR0cmlidXRlLCBmYWxzZSB9LAorICB7ICJub3BsdCIsICAgICAgICAgICAg ICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsCisJCQkgICAgICBo YW5kbGVfbm9wbHRfYXR0cmlidXRlLCBmYWxzZSB9LAogICB7ICJpZnVuYyIs ICAgICAgICAgICAgICAgICAgMSwgMSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwK IAkJCSAgICAgIGhhbmRsZV9pZnVuY19hdHRyaWJ1dGUsIGZhbHNlIH0sCiAg IHsgImFsaWFzIiwgICAgICAgICAgICAgICAgICAxLCAxLCB0cnVlLCAgZmFs c2UsIGZhbHNlLApAQCAtODE4NSw2ICs4MTg4LDI1IEBAIGhhbmRsZV93ZWFr X2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLAogICByZXR1cm4g TlVMTF9UUkVFOwogfQogCisvKiBIYW5kbGUgYSAibm9wbHQiIGF0dHJpYnV0 ZTsgYXJndW1lbnRzIGFzIGluCisgICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMu aGFuZGxlci4gICovCisKK3N0YXRpYyB0cmVlCitoYW5kbGVfbm9wbHRfYXR0 cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsCisJCSAgICAgICB0cmVl IEFSR19VTlVTRUQgKGFyZ3MpLAorCQkgICAgICAgaW50IEFSR19VTlVTRUQg KGZsYWdzKSwKKwkJICAgICAgIGJvb2wgKiBBUkdfVU5VU0VEIChub19hZGRf YXR0cnMpKQoreworICBpZiAoVFJFRV9DT0RFICgqbm9kZSkgIT0gRlVOQ1RJ T05fREVDTCkKKyAgICB7CisgICAgICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0 ZXMsCisJICAgICAgICIlcUUgYXR0cmlidXRlIGlzIG9ubHkgYXBwbGljYWJs ZSBvbiBmdW5jdGlvbnMiLCBuYW1lKTsKKyAgICAgICpub19hZGRfYXR0cnMg PSB0cnVlOworICAgICAgcmV0dXJuIE5VTExfVFJFRTsKKyAgICB9CisgIHJl dHVybiBOVUxMX1RSRUU7Cit9CisKIC8qIEhhbmRsZSBhbiAiYWxpYXMiIG9y ICJpZnVuYyIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAgIHN0cnVj dCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLCBleGNlcHQgdGhhdCBJU19BTElB UyB0ZWxscyB1cwogICAgd2hldGhlciB0aGlzIGlzIGFuIGFsaWFzIGFzIG9w cG9zZWQgdG8gaWZ1bmMgYXR0cmlidXRlLiAgKi8KSW5kZXg6IGNhbGxzLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gY2FsbHMuYwkocmV2aXNpb24g MjIzNzIwKQorKysgY2FsbHMuYwkod29ya2luZyBjb3B5KQpAQCAtMjI2LDEw ICsyMjYsMTYgQEAgcHJlcGFyZV9jYWxsX2FkZHJlc3MgKHRyZWUgZm5kZWNs X29yX3R5cGUsIHJ0eCBmdW4KIAkgICAgICAgJiYgdGFyZ2V0bS5zbWFsbF9y ZWdpc3Rlcl9jbGFzc2VzX2Zvcl9tb2RlX3AgKEZVTkNUSU9OX01PREUpKQog CSAgICAgID8gZm9yY2Vfbm90X21lbSAobWVtb3J5X2FkZHJlc3MgKEZVTkNU SU9OX01PREUsIGZ1bmV4cCkpCiAJICAgICAgOiBtZW1vcnlfYWRkcmVzcyAo RlVOQ1RJT05fTU9ERSwgZnVuZXhwKSk7Ci0gIGVsc2UgaWYgKGZsYWdfcGlj ICYmICFmbGFnX3BsdCAmJiBmbmRlY2xfb3JfdHlwZQorICBlbHNlIGlmIChm bGFnX3BpYworCSAgICYmIGZuZGVjbF9vcl90eXBlCiAJICAgJiYgVFJFRV9D T0RFIChmbmRlY2xfb3JfdHlwZSkgPT0gRlVOQ1RJT05fREVDTAorCSAgICYm ICghZmxhZ19wbHQKKwkgICAgICAgfHwgbG9va3VwX2F0dHJpYnV0ZSAoIm5v cGx0IiwgREVDTF9BVFRSSUJVVEVTIChmbmRlY2xfb3JfdHlwZSkpKQogCSAg ICYmICF0YXJnZXRtLmJpbmRzX2xvY2FsX3AgKGZuZGVjbF9vcl90eXBlKSkK ICAgICB7CisgICAgICAvKiBUaGlzIGlzIGRvbmUgb25seSBmb3IgUElDIGNv ZGUuICBUaGVyZSBpcyBubyBlYXN5IGludGVyZmFjZSB0byBmb3JjZSB0aGUK KwkgZnVuY3Rpb24gYWRkcmVzcyBpbnRvIEdPVCBmb3Igbm9uLVBJQyBjYXNl LiAgbm9uLVBJQyBjYXNlIG5lZWRzIHRvIGJlCisJIGhhbmRsZWQgc3BlY2lh bGx5IGJ5IHRoZSBiYWNrZW5kLiAgKi8KICAgICAgIGZ1bmV4cCA9IGZvcmNl X3JlZyAoUG1vZGUsIGZ1bmV4cCk7CiAgICAgfQogICBlbHNlIGlmICghIHNp YmNhbGxwKQpJbmRleDogY29uZmlnL2kzODYvaTM4Ni5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGNvbmZpZy9pMzg2L2kzODYuYwkocmV2aXNpb24g MjIzNzIwKQorKysgY29uZmlnL2kzODYvaTM4Ni5jCSh3b3JraW5nIGNvcHkp CkBAIC0yNTQ5NywxMyArMjU0OTcsMTggQEAgaXg4Nl9leHBhbmRfY2FsbCAo cnR4IHJldHZhbCwgcnR4IGZuYWRkciwgcnR4IGNhbGwKICAgICB9CiAgIGVs c2UKICAgICB7Ci0gICAgICAvKiBTdGF0aWMgZnVuY3Rpb25zIGFuZCBpbmRp cmVjdCBjYWxscyBkb24ndCBuZWVkIHRoZSBwaWMgcmVnaXN0ZXIuICAqLwor ICAgICAgLyogU3RhdGljIGZ1bmN0aW9ucyBhbmQgaW5kaXJlY3QgY2FsbHMg ZG9uJ3QgbmVlZCB0aGUgcGljIHJlZ2lzdGVyLiAgQWxzbywKKwkgY2hlY2sg aWYgUExUIHdhcyBleHBsaWNpdGx5IGF2b2lkZWQgdmlhIG5vLXBsdCBvciAi bm9wbHQiIGF0dHJpYnV0ZSwgbWFraW5nCisJIGl0IGFuIGluZGlyZWN0IGNh bGwuICAqLwogICAgICAgaWYgKGZsYWdfcGljCiAJICAmJiAoIVRBUkdFVF82 NEJJVAogCSAgICAgIHx8IChpeDg2X2Ntb2RlbCA9PSBDTV9MQVJHRV9QSUMK IAkJICAmJiBERUZBVUxUX0FCSSAhPSBNU19BQkkpKQogCSAgJiYgR0VUX0NP REUgKFhFWFAgKGZuYWRkciwgMCkpID09IFNZTUJPTF9SRUYKLQkgICYmICEg U1lNQk9MX1JFRl9MT0NBTF9QIChYRVhQIChmbmFkZHIsIDApKSkKKwkgICYm ICFTWU1CT0xfUkVGX0xPQ0FMX1AgKFhFWFAgKGZuYWRkciwgMCkpCisJICAm JiBmbGFnX3BsdAorCSAgJiYgIWxvb2t1cF9hdHRyaWJ1dGUgKCJub3BsdCIs CisJCSBERUNMX0FUVFJJQlVURVMgKFNZTUJPTF9SRUZfREVDTCAoWEVYUChm bmFkZHIsIDApKSkpKQogCXsKIAkgIHVzZV9yZWcgKCZ1c2UsIGdlbl9ydHhf UkVHIChQbW9kZSwgUkVBTF9QSUNfT0ZGU0VUX1RBQkxFX1JFR05VTSkpOwog CSAgaWYgKGl4ODZfdXNlX3BzZXVkb19waWNfcmVnICgpKQpAQCAtMjU1OTgs NyArMjU2MDMsMzEgQEAgaXg4Nl9leHBhbmRfY2FsbCAocnR4IHJldHZhbCwg cnR4IGZuYWRkciwgcnR4IGNhbGwKIAogICByZXR1cm4gY2FsbDsKIH0KKy8q IFJldHVybiB0cnVlIGlmIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgd2Fz IG1hcmtlZCB3aXRoIGF0dHJpYnV0ZSAibm9wbHQiCisgICBvciB1c2luZyAt Zm5vLXBsdCBhbmQgd2UgYXJlIGNvbXBpbGluZyBmb3Igbm9uLVBJQyBhbmQg eDg2XzY0LiAgV2UgbmVlZCB0bworICAgaGFuZGxlIHRoZSBub24tUElDIGNh c2UgaW4gdGhlIGJhY2tlbmQgYmVjYXVzZSB0aGVyZSBpcyBubyBlYXN5IGlu dGVyZmFjZQorICAgZm9yIHRoZSBmcm9udC1lbmQgdG8gZm9yY2Ugbm9uLVBM VCBjYWxscyB0byB1c2UgdGhlIEdPVC4gIFRoaXMgaXMgY3VycmVudGx5Cisg ICB1c2VkIG9ubHkgd2l0aCA2NC1iaXQgRUxGIHRhcmdldHMgdG8gY2FsbCB0 aGUgZnVuY3Rpb24gbWFya2VkICJub3BsdCIKKyAgIGluZGlyZWN0bHkuICAq LwogCitzdGF0aWMgYm9vbAoraXg4Nl9ub3BpY19ub3BsdF9hdHRyaWJ1dGVf cCAocnR4IGNhbGxfb3ApCit7CisgIGlmIChmbGFnX3BpYyB8fCBpeDg2X2Nt b2RlbCA9PSBDTV9MQVJHRQorICAgICAgfHwgIVRBUkdFVF82NEJJVCB8fCBU QVJHRVRfTUFDSE98fCBUQVJHRVRfU0VIIHx8IFRBUkdFVF9QRUNPRkYKKyAg ICAgIHx8IFNZTUJPTF9SRUZfTE9DQUxfUCAoY2FsbF9vcCkpCisgICAgcmV0 dXJuIGZhbHNlOworCisgIHRyZWUgc3ltYm9sX2RlY2wgPSBTWU1CT0xfUkVG X0RFQ0wgKGNhbGxfb3ApOworCisgIGlmICghZmxhZ19wbHQKKyAgICAgIHx8 IChzeW1ib2xfZGVjbCAhPSBOVUxMX1RSRUUKKyAgICAgICAgICAmJiBsb29r dXBfYXR0cmlidXRlICgibm9wbHQiLCBERUNMX0FUVFJJQlVURVMgKHN5bWJv bF9kZWNsKSkpKQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxz ZTsKK30KKwogLyogT3V0cHV0IHRoZSBhc3NlbWJseSBmb3IgYSBjYWxsIGlu c3RydWN0aW9uLiAgKi8KIAogY29uc3QgY2hhciAqCkBAIC0yNTYxMCw3ICsy NTYzOSw5IEBAIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmlu c24sIHJ0eCBjYWxsX29wCiAKICAgaWYgKFNJQkxJTkdfQ0FMTF9QIChpbnNu KSkKICAgICB7Ci0gICAgICBpZiAoZGlyZWN0X3ApCisgICAgICBpZiAoZGly ZWN0X3AgJiYgaXg4Nl9ub3BpY19ub3BsdF9hdHRyaWJ1dGVfcCAoY2FsbF9v cCkpCisJeGFzbSA9ICIlIWptcFx0KiVwMEBHT1RQQ1JFTCglJXJpcCkiOwor ICAgICAgZWxzZSBpZiAoZGlyZWN0X3ApCiAJeGFzbSA9ICIlIWptcFx0JVAw IjsKICAgICAgIC8qIFNFSCBlcGlsb2d1ZSBkZXRlY3Rpb24gcmVxdWlyZXMg dGhlIGluZGlyZWN0IGJyYW5jaCBjYXNlCiAJIHRvIGluY2x1ZGUgUkVYLlcu ICAqLwpAQCAtMjU2NTMsNyArMjU2ODQsOSBAQCBpeDg2X291dHB1dF9jYWxs X2luc24gKHJ0eF9pbnNuICppbnNuLCBydHggY2FsbF9vcAogCXNlaF9ub3Bf cCA9IHRydWU7CiAgICAgfQogCi0gIGlmIChkaXJlY3RfcCkKKyAgaWYgKGRp cmVjdF9wICYmIGl4ODZfbm9waWNfbm9wbHRfYXR0cmlidXRlX3AgKGNhbGxf b3ApKQorICAgIHhhc20gPSAiJSFjYWxsXHQqJXAwQEdPVFBDUkVMKCUlcmlw KSI7CisgIGVsc2UgaWYgKGRpcmVjdF9wKQogICAgIHhhc20gPSAiJSFjYWxs XHQlUDAiOwogICBlbHNlCiAgICAgeGFzbSA9ICIlIWNhbGxcdCVBMCI7Cklu ZGV4OiBkb2MvZXh0ZW5kLnRleGkKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gZG9jL2V4dGVuZC50ZXhpCShyZXZpc2lvbiAyMjM3MjApCisrKyBkb2Mv ZXh0ZW5kLnRleGkJKHdvcmtpbmcgY29weSkKQEAgLTI5MTYsNiArMjkxNiwz NSBAQCB0aGUgc3RhbmRhcmQgQyBsaWJyYXJ5IGNhbiBiZSBndWFyYW50ZWVk IG5vdCB0byB0aAogd2l0aCB0aGUgbm90YWJsZSBleGNlcHRpb25zIG9mIEBj b2Rle3Fzb3J0fSBhbmQgQGNvZGV7YnNlYXJjaH0gdGhhdAogdGFrZSBmdW5j dGlvbiBwb2ludGVyIGFyZ3VtZW50cy4KIAorQGl0ZW0gbm9wbHQKK0BjaW5k ZXggQGNvZGV7bm9wbHR9IGZ1bmN0aW9uIGF0dHJpYnV0ZQorVGhlIEBjb2Rl e25vcGx0fSBhdHRyaWJ1dGUgaXMgdGhlIGNvdW50ZXJwYXJ0IHRvIG9wdGlv biBAb3B0aW9uey1mbm8tcGx0fSBhbmQKK2RvZXMgbm90IHVzZSBQTFQgZm9y IGNhbGxzIHRvIGZ1bmN0aW9ucyBtYXJrZWQgd2l0aCB0aGlzIGF0dHJpYnV0 ZSBpbiBwb3NpdGlvbgoraW5kZXBlbmRlbnQgY29kZS4gCisKK0BzbWFsbGV4 YW1wbGUKK0Bncm91cAorLyogRXh0ZXJuYWxseSBkZWZpbmVkIGZ1bmN0aW9u IGZvby4gICovCitpbnQgZm9vICgpIF9fYXR0cmlidXRlX18gKChub3BsdCkp OworCitpbnQKK21haW4gKC8qIEBye0Bkb3Rze319ICovKQorQHsKKyAgLyog QHJ7QGRvdHN7fX0gKi8KKyAgZm9vICgpOworICAvKiBAcntAZG90c3t9fSAq LworQH0KK0BlbmQgZ3JvdXAKK0BlbmQgc21hbGxleGFtcGxlCisKK1RoZSBA Y29kZXtub3BsdH0gYXR0cmlidXRlIG9uIGZ1bmN0aW9uIGZvbyB0ZWxscyB0 aGUgY29tcGlsZXIgdG8gYXNzdW1lIHRoYXQKK3RoZSBmdW5jdGlvbiBmb28g aXMgZXh0ZXJuYWxseSBkZWZpbmVkIGFuZCB0aGUgY2FsbCB0byBmb28gbXVz dCBhdm9pZCB0aGUgUExUCitpbiBwb3NpdGlvbiBpbmRlcGVuZGVudCBjb2Rl LgorCitBZGRpdGlvbmFsbHksIGEgZmV3IHRhcmdldHMgYWxzbyBjb252ZXJ0 IGNhbGxzIHRvIHRob3NlIGZ1bmN0aW9ucyB0aGF0IGFyZQorbWFya2VkIHRv IG5vdCB1c2UgdGhlIFBMVCB0byB1c2UgdGhlIEdPVCBpbnN0ZWFkIGZvciBu b24tcG9zaXRpb24gaW5kZXBlbmRlbnQKK2NvZGUuCisKIEBpdGVtIG9wdGlt aXplCiBAY2luZGV4IEBjb2Rle29wdGltaXplfSBmdW5jdGlvbiBhdHRyaWJ1 dGUKIFRoZSBAY29kZXtvcHRpbWl6ZX0gYXR0cmlidXRlIGlzIHVzZWQgdG8g c3BlY2lmeSB0aGF0IGEgZnVuY3Rpb24gaXMgdG8KSW5kZXg6IGRvYy9pbnZv a2UudGV4aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb2MvaW52b2tl LnRleGkJKHJldmlzaW9uIDIyMzcyMCkKKysrIGRvYy9pbnZva2UudGV4aQko d29ya2luZyBjb3B5KQpAQCAtMjM4NjgsNiArMjM4NjgsMTQgQEAgUExUIHN0 dWJzIGV4cGVjdCBHT1QgcG9pbnRlciBpbiBhIHNwZWNpZmljIHJlZ2lzdGUK IHJlZ2lzdGVyIGFsbG9jYXRpb24gZnJlZWRvbSB0byB0aGUgY29tcGlsZXIu ICBMYXp5IGJpbmRpbmcgcmVxdWlyZXMgUExUOgogd2l0aCBAb3B0aW9uey1m bm8tcGx0fSBhbGwgZXh0ZXJuYWwgc3ltYm9scyBhcmUgcmVzb2x2ZWQgYXQg bG9hZCB0aW1lLgogCitBbHRlcm5hdGl2ZWx5LCBmdW5jdGlvbiBhdHRyaWJ1 dGUgQGNvZGV7bm9wbHR9IGNhbiBiZSB1c2VkIHRvIGF2b2lkIFBMVAorZm9y IGNhbGxzIHRvIHNwZWNpZmljIGV4dGVybmFsIGZ1bmN0aW9ucyBieSBtYXJr aW5nIHRob3NlIGZ1bmN0aW9ucyB3aXRoCit0aGlzIGF0dHJpYnV0ZS4KKwor QWRkaXRpb25hbGx5LCBhIGZldyB0YXJnZXRzIGFsc28gY29udmVydCBjYWxs cyB0byB0aG9zZSBmdW5jdGlvbnMgdGhhdCBhcmUKK21hcmtlZCB0byBub3Qg dXNlIHRoZSBQTFQgdG8gdXNlIHRoZSBHT1QgaW5zdGVhZCBmb3Igbm9uLXBv c2l0aW9uIGluZGVwZW5kZW50Citjb2RlLgorCiBAaXRlbSAtZm5vLWp1bXAt dGFibGVzCiBAb3BpbmRleCBmbm8tanVtcC10YWJsZXMKIERvIG5vdCB1c2Ug anVtcCB0YWJsZXMgZm9yIHN3aXRjaCBzdGF0ZW1lbnRzIGV2ZW4gd2hlcmUg aXQgd291bGQgYmUKSW5kZXg6IHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv bm9wbHQtMS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQtMS5jCShyZXZpc2lvbiAwKQorKysg dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9ub3BsdC0xLmMJKHdvcmtpbmcg Y29weSkKQEAgLTAsMCArMSwxMyBAQAorLyogeyBkZy1kbyBjb21waWxlIHsg dGFyZ2V0IHg4Nl82NC0qLWxpbnV4KiB9IH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLWZuby1waWMiIH0gKi8KKworX19hdHRyaWJ1dGVfXyAoKG5vcGx0KSkK K3ZvaWQgZm9vKCk7CisKK2ludCBtYWluKCkKK3sKKyAgZm9vKCk7CisgIHJl dHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg ImNhbGxcWyBcdFxdXFwqLipmb28uKkBHT1RQQ1JFTFxcKCVyaXBcXCkiIH0g fSAqLyAKSW5kZXg6IHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQt Mi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvbm9wbHQtMi5jCShyZXZpc2lvbiAwKQorKysgdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9ub3BsdC0yLmMJKHdvcmtpbmcgY29weSkK QEAgLTAsMCArMSwxMyBAQAorLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0 IHg4Nl82NC0qLWxpbnV4KiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8y IC1mbm8tcGljIiB9ICovCisKKworX19hdHRyaWJ1dGVfXyAoKG5vcGx0KSkK K2ludCBmb28oKTsKKworaW50IG1haW4oKQoreworICByZXR1cm4gZm9vKCk7 Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsg XHRcXVxcKi4qZm9vLipAR09UUENSRUxcXCglcmlwXFwpIiB9IH0gKi8gCklu ZGV4OiB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L25vcGx0LTMuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L25vcGx0LTMuYwkocmV2aXNpb24gMCkKKysrIHRlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvbm9wbHQtMy5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg KzEsMTIgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB4ODZfNjQt Ki1saW51eCogfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mbm8tcGljIC1m bm8tcGx0IiB9ICovCisKK3ZvaWQgZm9vKCk7CisKK2ludCBtYWluKCkKK3sK KyAgZm9vKCk7CisgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdXFwqLipmb28uKkBHT1RQQ1JF TFxcKCVyaXBcXCkiIH0gfSAqLyAKSW5kZXg6IHRlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvbm9wbHQtNC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQtNC5jCShyZXZpc2lv biAwKQorKysgdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9ub3BsdC00LmMJ KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorLyogeyBkZy1kbyBj b21waWxlIHsgdGFyZ2V0IHg4Nl82NC0qLWxpbnV4KiB9IH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIC1mbm8tcGx0IiB9ICovCisKK2lu dCBmb28oKTsKKworaW50IG1haW4oKQoreworICByZXR1cm4gZm9vKCk7Cit9 CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRc XVxcKi4qZm9vLipAR09UUENSRUxcXCglcmlwXFwpIiB9IH0gKi8K --bcaec51b1511e64a8e0517b4072b--