From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 81624 invoked by alias); 2 Jun 2015 19:59:46 -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 81612 invoked by uid 89); 2 Jun 2015 19:59:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_50,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-f49.google.com Received: from mail-vn0-f49.google.com (HELO mail-vn0-f49.google.com) (209.85.216.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 02 Jun 2015 19:59:43 +0000 Received: by vnbg190 with SMTP id g190so22183056vnb.4 for ; Tue, 02 Jun 2015 12:59:41 -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=o/WfBdj5RNaQEPNJno7AKvG0e/JMdUk/9wEso/WpkUw=; b=k2UJyVE/jRE+5x2+NUgjcQqUiJC+Uw04iV97A6gP6x5QEdqg6nasks8e0M1Ec6HgGq VBjLb67vWetdvjtJIzi/ZVaC08+NLj1LowP8QLRUJMGI6YkJxHyIFtUiVltNZEkHCcfM UD0kf8zJvGwOo/PZDCDqDeHc47aN0i8MLwBSvB6Tzl0+ZUKENOFic23+ZLJejEOM/pVr tWiu4syFaP6QCHWZhtunWZMWxCDRCnelmwkuSvXikzb8KNJmA3mv2dkPPPl4yGgB8zWe LKgjEtiYS0xT2KzJBnFhQ117xbhP5p4isv6uM/0seWj9/op6E17l05J8cZjGNJSPh6W0 dxKQ== X-Gm-Message-State: ALoCoQnyz+AbveCj5qYtu/Y5CAqP2wLHRLuYnD6XcfzIbw15pflpvFvIL11HLhPJF/eFVtJWjU1i MIME-Version: 1.0 X-Received: by 10.52.69.178 with SMTP id f18mr40343583vdu.83.1433275180805; Tue, 02 Jun 2015 12:59:40 -0700 (PDT) Received: by 10.52.231.35 with HTTP; Tue, 2 Jun 2015 12:59:40 -0700 (PDT) In-Reply-To: References: <20150529193552.GA52215@kam.mff.cuni.cz> <556C16B1.5080606@arm.com> Date: Tue, 02 Jun 2015 20:09:00 -0000 Message-ID: Subject: Re: [RFC][PATCH][X86_64] Eliminate PLT stubs for specified external functions via -fno-plt= From: Sriraman Tallam To: Bernhard Reutner-Fischer Cc: ramrad01@arm.com, Ramana Radhakrishnan , Jan Hubicka , "H.J. Lu" , Pedro Alves , Michael Matz , David Li , GCC Patches Content-Type: multipart/mixed; boundary=20cf307f3aaa04ce6905178e623c X-IsSubscribed: yes X-SW-Source: 2015-06/txt/msg00246.txt.bz2 --20cf307f3aaa04ce6905178e623c Content-Type: text/plain; charset=UTF-8 Content-length: 1887 On Tue, Jun 2, 2015 at 12:32 PM, Bernhard Reutner-Fischer wrote: > On June 2, 2015 8:15:42 PM GMT+02:00, Sriraman Tallam wrote: > [] > >>I have now modified this patch. >> >>This patch does two things: >> >>1) Adds new generic function attribute "no_plt" that is similar in >>functionality to -fno-plt except that it applies only to calls to >>functions that are marked with this attribute. >>2) For x86_64, it makes -fno-plt(and the attribute) also work for >>non-PIC code by directly generating an indirect call via a GOT entry. >> >>For PIC code, no_plt merely shadows the implementation of -fno-plt, no >>surprises here. >> >>* c-family/c-common.c (no_plt): New attribute. >>(handle_no_plt_attribute): New handler. >>* calls.c (prepare_call_address): Check for no_plt >>attribute. >>* config/i386/i386.c (ix86_function_ok_for_sibcall): Check >>for no_plt attribute. >>(ix86_expand_call): Ditto. >>(nopic_no_plt_attribute): New function. >>(ix86_output_call_insn): Output indirect call for non-pic >>no plt calls. >>* doc/extend.texi (no_plt): 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. >> >> >>Please review. > > --- config/i386/i386.c (revision 223720) > +++ config/i386/i386.c (working copy) > @@ -5479,6 +5479,8 @@ ix86_function_ok_for_sibcall (tree decl, tree exp) > && !TARGET_64BIT > && flag_pic > && flag_plt > + && (TREE_CODE (decl) != FUNCTION_DECL > + || !lookup_attribute ("no_plt", DECL_ATTRIBUTES (decl))) > && decl && !targetm.binds_local_p (decl)) > return false; > > Wrong order or && decl is redundant. Stopped reading here. Fixed and new patch attached. Thanks Sri > > Thanks, > --20cf307f3aaa04ce6905178e623c 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_iafr18dk0 Content-length: 13266 CSogYy1mYW1pbHkvYy1jb21tb24uYyAobm9fcGx0KTogTmV3IGF0dHJpYnV0 ZS4KCShoYW5kbGVfbm9fcGx0X2F0dHJpYnV0ZSk6IE5ldyBoYW5kbGVyLgoJ KiBjYWxscy5jIChwcmVwYXJlX2NhbGxfYWRkcmVzcyk6IENoZWNrIGZvciBu b19wbHQKCWF0dHJpYnV0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2 X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogQ2hlY2sKCWZvciBub19wbHQg YXR0cmlidXRlLgoJKGl4ODZfZXhwYW5kX2NhbGwpOiAgRGl0dG8uCgkobm9w aWNfbm9fcGx0X2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShpeDg2X291 dHB1dF9jYWxsX2luc24pOiBPdXRwdXQgaW5kaXJlY3QgY2FsbCBmb3Igbm9u LXBpYwoJbm8gcGx0IGNhbGxzLgoJKiBkb2MvZXh0ZW5kLnRleGkgKG5vX3Bs dCk6IERvY3VtZW50IG5ldyBhdHRyaWJ1dGUuCgkqIHRlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvbm9wbHQtMS5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9ub3BsdC0yLmM6IE5ldyB0ZXN0LgoJKiB0ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L25vcGx0LTMuYzogTmV3IHRlc3QuCgkq IHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQtNC5jOiBOZXcgdGVz dC4KClRoaXMgcGF0Y2ggZG9lcyB0d28gdGhpbmdzOgoKKiBBZGRzIG5ldyBn ZW5lcmljIGZ1bmN0aW9uIGF0dHJpYnV0ZSAibm9fcGx0IiB0aGF0IGlzIHNp bWlsYXIgaW4gZnVuY3Rpb25hbGl0eQogIHRvIC1mbm8tcGx0IGV4Y2VwdCB0 aGF0IGl0IGFwcGxpZXMgb25seSB0byBjYWxscyB0byBmdW5jdGlvbnMgdGhh dCBhcmUgbWFya2VkCiAgd2l0aCB0aGlzIGF0dHJpYnV0ZS4KKiBGb3IgeDg2 XzY0LCBpdCBtYWtlcyAtZm5vLXBsdChhbmQgdGhlIGF0dHJpYnV0ZSkgYWxz byB3b3JrIGZvciBub24tUElDIGNvZGUgYnkKICBkaXJlY3RseSBnZW5lcmF0 aW5nIGFuIGluZGlyZWN0IGNhbGwgdmlhIGEgR09UIGVudHJ5LgoKSW5kZXg6 IGMtZmFtaWx5L2MtY29tbW9uLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gYy1mYW1pbHkvYy1jb21tb24uYwkocmV2aXNpb24gMjIzNzIwKQorKysg Yy1mYW1pbHkvYy1jb21tb24uYwkod29ya2luZyBjb3B5KQpAQCAtMzU3LDYg KzM1Nyw3IEBAIHN0YXRpYyB0cmVlIGhhbmRsZV9tb2RlX2F0dHJpYnV0ZSAo dHJlZSAqLCB0cmVlLCB0CiBzdGF0aWMgdHJlZSBoYW5kbGVfc2VjdGlvbl9h dHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwog c3RhdGljIHRyZWUgaGFuZGxlX2FsaWduZWRfYXR0cmlidXRlICh0cmVlICos IHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRs ZV93ZWFrX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJv b2wgKikgOworc3RhdGljIHRyZWUgaGFuZGxlX25vX3BsdF9hdHRyaWJ1dGUg KHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopIDsKIHN0YXRpYyB0 cmVlIGhhbmRsZV9hbGlhc19pZnVuY19hdHRyaWJ1dGUgKGJvb2wsIHRyZWUg KiwgdHJlZSwgdHJlZSwgYm9vbCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRsZV9p ZnVuY19hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29s ICopOwogc3RhdGljIHRyZWUgaGFuZGxlX2FsaWFzX2F0dHJpYnV0ZSAodHJl ZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CkBAIC03MDYsNiArNzA3 LDggQEAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGNfY29tbW9uX2F0 dHJpYnV0ZV90YWIKIAkJCSAgICAgIGhhbmRsZV9hbGlnbmVkX2F0dHJpYnV0 ZSwgZmFsc2UgfSwKICAgeyAid2VhayIsICAgICAgICAgICAgICAgICAgIDAs IDAsIHRydWUsICBmYWxzZSwgZmFsc2UsCiAJCQkgICAgICBoYW5kbGVfd2Vh a19hdHRyaWJ1dGUsIGZhbHNlIH0sCisgIHsgIm5vX3BsdCIsICAgICAgICAg ICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsCisJCQkgICAg ICBoYW5kbGVfbm9fcGx0X2F0dHJpYnV0ZSwgZmFsc2UgfSwKICAgeyAiaWZ1 bmMiLCAgICAgICAgICAgICAgICAgIDEsIDEsIHRydWUsICBmYWxzZSwgZmFs c2UsCiAJCQkgICAgICBoYW5kbGVfaWZ1bmNfYXR0cmlidXRlLCBmYWxzZSB9 LAogICB7ICJhbGlhcyIsICAgICAgICAgICAgICAgICAgMSwgMSwgdHJ1ZSwg IGZhbHNlLCBmYWxzZSwKQEAgLTgxODUsNiArODE4OCwyNSBAQCBoYW5kbGVf d2Vha19hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwKICAgcmV0 dXJuIE5VTExfVFJFRTsKIH0KIAorLyogSGFuZGxlIGEgIm5vX3BsdCIgYXR0 cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KKyAgIHN0cnVjdCBhdHRyaWJ1dGVf c3BlYy5oYW5kbGVyLiAgKi8KKworc3RhdGljIHRyZWUKK2hhbmRsZV9ub19w bHRfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsCisJCSAgICAg ICB0cmVlIEFSR19VTlVTRUQgKGFyZ3MpLAorCQkgICAgICAgaW50IEFSR19V TlVTRUQgKGZsYWdzKSwKKwkJICAgICAgIGJvb2wgKiBBUkdfVU5VU0VEIChu b19hZGRfYXR0cnMpKQoreworICBpZiAoVFJFRV9DT0RFICgqbm9kZSkgIT0g RlVOQ1RJT05fREVDTCkKKyAgICB7CisgICAgICB3YXJuaW5nIChPUFRfV2F0 dHJpYnV0ZXMsCisJICAgICAgICIlcUUgYXR0cmlidXRlIGlzIG9ubHkgYXBw bGljYWJsZSBvbiBmdW5jdGlvbnMiLCBuYW1lKTsKKyAgICAgICpub19hZGRf YXR0cnMgPSB0cnVlOworICAgICAgcmV0dXJuIE5VTExfVFJFRTsKKyAgICB9 CisgIHJldHVybiBOVUxMX1RSRUU7Cit9CisKIC8qIEhhbmRsZSBhbiAiYWxp YXMiIG9yICJpZnVuYyIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAg IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLCBleGNlcHQgdGhhdCBJ U19BTElBUyB0ZWxscyB1cwogICAgd2hldGhlciB0aGlzIGlzIGFuIGFsaWFz IGFzIG9wcG9zZWQgdG8gaWZ1bmMgYXR0cmlidXRlLiAgKi8KSW5kZXg6IGNh bGxzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY2FsbHMuYwkocmV2 aXNpb24gMjIzNzIwKQorKysgY2FsbHMuYwkod29ya2luZyBjb3B5KQpAQCAt MjI2LDggKzIyNiwxMCBAQCBwcmVwYXJlX2NhbGxfYWRkcmVzcyAodHJlZSBm bmRlY2xfb3JfdHlwZSwgcnR4IGZ1bgogCSAgICAgICAmJiB0YXJnZXRtLnNt YWxsX3JlZ2lzdGVyX2NsYXNzZXNfZm9yX21vZGVfcCAoRlVOQ1RJT05fTU9E RSkpCiAJICAgICAgPyBmb3JjZV9ub3RfbWVtIChtZW1vcnlfYWRkcmVzcyAo RlVOQ1RJT05fTU9ERSwgZnVuZXhwKSkKIAkgICAgICA6IG1lbW9yeV9hZGRy ZXNzIChGVU5DVElPTl9NT0RFLCBmdW5leHApKTsKLSAgZWxzZSBpZiAoZmxh Z19waWMgJiYgIWZsYWdfcGx0ICYmIGZuZGVjbF9vcl90eXBlCisgIGVsc2Ug aWYgKGZsYWdfcGljICYmIGZuZGVjbF9vcl90eXBlCiAJICAgJiYgVFJFRV9D T0RFIChmbmRlY2xfb3JfdHlwZSkgPT0gRlVOQ1RJT05fREVDTAorCSAgICYm ICghZmxhZ19wbHQKKwkgICAgICAgfHwgbG9va3VwX2F0dHJpYnV0ZSAoIm5v X3BsdCIsIERFQ0xfQVRUUklCVVRFUyAoZm5kZWNsX29yX3R5cGUpKSkKIAkg ICAmJiAhdGFyZ2V0bS5iaW5kc19sb2NhbF9wIChmbmRlY2xfb3JfdHlwZSkp CiAgICAgewogICAgICAgZnVuZXhwID0gZm9yY2VfcmVnIChQbW9kZSwgZnVu ZXhwKTsKSW5kZXg6IGNvbmZpZy9pMzg2L2kzODYuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBjb25maWcvaTM4Ni9pMzg2LmMJKHJldmlzaW9uIDIy MzcyMCkKKysrIGNvbmZpZy9pMzg2L2kzODYuYwkod29ya2luZyBjb3B5KQpA QCAtNTQ3OSw3ICs1NDc5LDEwIEBAIGl4ODZfZnVuY3Rpb25fb2tfZm9yX3Np YmNhbGwgKHRyZWUgZGVjbCwgdHJlZSBleHApCiAgICAgICAmJiAhVEFSR0VU XzY0QklUCiAgICAgICAmJiBmbGFnX3BpYwogICAgICAgJiYgZmxhZ19wbHQK LSAgICAgICYmIGRlY2wgJiYgIXRhcmdldG0uYmluZHNfbG9jYWxfcCAoZGVj bCkpCisgICAgICAmJiBkZWNsCisgICAgICAmJiAoVFJFRV9DT0RFIChkZWNs KSAhPSBGVU5DVElPTl9ERUNMCisJICB8fCAhbG9va3VwX2F0dHJpYnV0ZSAo Im5vX3BsdCIsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpKQorICAgICAgJiYg IXRhcmdldG0uYmluZHNfbG9jYWxfcCAoZGVjbCkpCiAgICAgcmV0dXJuIGZh bHNlOwogCiAgIC8qIElmIHdlIG5lZWQgdG8gYWxpZ24gdGhlIG91dGdvaW5n IHN0YWNrLCB0aGVuIHNpYmNhbGxpbmcgd291bGQKQEAgLTI1NDk3LDEzICsy NTUwMCwxOSBAQCBpeDg2X2V4cGFuZF9jYWxsIChydHggcmV0dmFsLCBydHgg Zm5hZGRyLCBydHggY2FsbAogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAg IC8qIFN0YXRpYyBmdW5jdGlvbnMgYW5kIGluZGlyZWN0IGNhbGxzIGRvbid0 IG5lZWQgdGhlIHBpYyByZWdpc3Rlci4gICovCisgICAgICAvKiBTdGF0aWMg ZnVuY3Rpb25zIGFuZCBpbmRpcmVjdCBjYWxscyBkb24ndCBuZWVkIHRoZSBw aWMgcmVnaXN0ZXIuICBBbHNvLAorCSBjaGVjayBpZiBQTFQgd2FzIGV4cGxp Y2l0bHkgYXZvaWRlZCB2aWEgbm8tcGx0IG9yICJub19wbHQiIGF0dHJpYnV0 ZSwgbWFraW5nCisJIGl0IGFuIGluZGlyZWN0IGNhbGwuICAqLwogICAgICAg aWYgKGZsYWdfcGljCiAJICAmJiAoIVRBUkdFVF82NEJJVAogCSAgICAgIHx8 IChpeDg2X2Ntb2RlbCA9PSBDTV9MQVJHRV9QSUMKIAkJICAmJiBERUZBVUxU X0FCSSAhPSBNU19BQkkpKQogCSAgJiYgR0VUX0NPREUgKFhFWFAgKGZuYWRk ciwgMCkpID09IFNZTUJPTF9SRUYKLQkgICYmICEgU1lNQk9MX1JFRl9MT0NB TF9QIChYRVhQIChmbmFkZHIsIDApKSkKKwkgICYmICEgU1lNQk9MX1JFRl9M T0NBTF9QIChYRVhQIChmbmFkZHIsIDApKQorCSAgJiYgZmxhZ19wbHQKKwkg ICYmIChUUkVFX0NPREUgKFNZTUJPTF9SRUZfREVDTCAoWEVYUChmbmFkZHIs IDApKSkgIT0gRlVOQ1RJT05fREVDTAorCSAgICAgIHx8ICFsb29rdXBfYXR0 cmlidXRlICgibm9fcGx0IiwKKwkJICAgICBERUNMX0FUVFJJQlVURVMgKFNZ TUJPTF9SRUZfREVDTCAoWEVYUChmbmFkZHIsIDApKSkpKSkKIAl7CiAJICB1 c2VfcmVnICgmdXNlLCBnZW5fcnR4X1JFRyAoUG1vZGUsIFJFQUxfUElDX09G RlNFVF9UQUJMRV9SRUdOVU0pKTsKIAkgIGlmIChpeDg2X3VzZV9wc2V1ZG9f cGljX3JlZyAoKSkKQEAgLTI1NTk5LDYgKzI1NjA4LDM0IEBAIGl4ODZfZXhw YW5kX2NhbGwgKHJ0eCByZXR2YWwsIHJ0eCBmbmFkZHIsIHJ0eCBjYWxsCiAg IHJldHVybiBjYWxsOwogfQogCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZnVu Y3Rpb24gYmVpbmcgY2FsbGVkIHdhcyBtYXJrZWQgd2l0aCBhdHRyaWJ1dGUK KyAgICJub19wbHQiIG9yIHVzaW5nIC1mbm8tcGx0IGFuZCB3ZSBhcmUgY29t cGlsaW5nIGZvciBuby1QSUMgYW5kIHg4Nl82NC4KKyAgIFRoaXMgaXMgY3Vy cmVudGx5IHVzZWQgb25seSB3aXRoIDY0LWJpdCBFTEYgdGFyZ2V0cyB0byBj YWxsIHRoZSBmdW5jdGlvbgorICAgbWFya2VkICJub19wbHQiIGluZGlyZWN0 bHkuICAqLworCitzdGF0aWMgYm9vbAorbm9waWNfbm9fcGx0X2F0dHJpYnV0 ZSAocnR4IGNhbGxfb3ApCit7CisgIGlmIChmbGFnX3BpYykKKyAgICByZXR1 cm4gZmFsc2U7CisKKyAgaWYgKCFUQVJHRVRfNjRCSVQgfHwgVEFSR0VUX01B Q0hPfHwgVEFSR0VUX1NFSCB8fCBUQVJHRVRfUEVDT0ZGKQorICAgIHJldHVy biBmYWxzZTsKKworICBpZiAoU1lNQk9MX1JFRl9MT0NBTF9QIChjYWxsX29w KSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgdHJlZSBzeW1ib2xfZGVjbCA9 IFNZTUJPTF9SRUZfREVDTCAoY2FsbF9vcCk7CisKKyAgaWYgKHN5bWJvbF9k ZWNsICE9IE5VTExfVFJFRQorICAgICAgJiYgVFJFRV9DT0RFIChzeW1ib2xf ZGVjbCkgPT0gRlVOQ1RJT05fREVDTAorICAgICAgJiYgKCFmbGFnX3BsdAor ICAgICAgICAgIHx8IGxvb2t1cF9hdHRyaWJ1dGUgKCJub19wbHQiLCBERUNM X0FUVFJJQlVURVMgKHN5bWJvbF9kZWNsKSkpKQorICAgIHJldHVybiB0cnVl OworCisgIHJldHVybiBmYWxzZTsKK30KKwogLyogT3V0cHV0IHRoZSBhc3Nl bWJseSBmb3IgYSBjYWxsIGluc3RydWN0aW9uLiAgKi8KIAogY29uc3QgY2hh ciAqCkBAIC0yNTYxMCw3ICsyNTY0Nyw5IEBAIGl4ODZfb3V0cHV0X2NhbGxf aW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wCiAKICAgaWYgKFNJ QkxJTkdfQ0FMTF9QIChpbnNuKSkKICAgICB7Ci0gICAgICBpZiAoZGlyZWN0 X3ApCisgICAgICBpZiAoZGlyZWN0X3AgJiYgbm9waWNfbm9fcGx0X2F0dHJp YnV0ZSAoY2FsbF9vcCkpCisJeGFzbSA9ICIlIWptcFx0KiVwMEBHT1RQQ1JF TCglJXJpcCkiOworICAgICAgZWxzZSBpZiAoZGlyZWN0X3ApCiAJeGFzbSA9 ICIlIWptcFx0JVAwIjsKICAgICAgIC8qIFNFSCBlcGlsb2d1ZSBkZXRlY3Rp b24gcmVxdWlyZXMgdGhlIGluZGlyZWN0IGJyYW5jaCBjYXNlCiAJIHRvIGlu Y2x1ZGUgUkVYLlcuICAqLwpAQCAtMjU2NTMsNyArMjU2OTIsOSBAQCBpeDg2 X291dHB1dF9jYWxsX2luc24gKHJ0eF9pbnNuICppbnNuLCBydHggY2FsbF9v cAogCXNlaF9ub3BfcCA9IHRydWU7CiAgICAgfQogCi0gIGlmIChkaXJlY3Rf cCkKKyAgaWYgKGRpcmVjdF9wICYmIG5vcGljX25vX3BsdF9hdHRyaWJ1dGUg KGNhbGxfb3ApKQorICAgIHhhc20gPSAiJSFjYWxsXHQqJXAwQEdPVFBDUkVM KCUlcmlwKSI7CisgIGVsc2UgaWYgKGRpcmVjdF9wKQogICAgIHhhc20gPSAi JSFjYWxsXHQlUDAiOwogICBlbHNlCiAgICAgeGFzbSA9ICIlIWNhbGxcdCVB MCI7CkluZGV4OiBkb2MvZXh0ZW5kLnRleGkKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZG9jL2V4dGVuZC50ZXhpCShyZXZpc2lvbiAyMjM3MjApCisr KyBkb2MvZXh0ZW5kLnRleGkJKHdvcmtpbmcgY29weSkKQEAgLTI5MTYsNiAr MjkxNiwxNSBAQCB0aGUgc3RhbmRhcmQgQyBsaWJyYXJ5IGNhbiBiZSBndWFy YW50ZWVkIG5vdCB0byB0aAogd2l0aCB0aGUgbm90YWJsZSBleGNlcHRpb25z IG9mIEBjb2Rle3Fzb3J0fSBhbmQgQGNvZGV7YnNlYXJjaH0gdGhhdAogdGFr ZSBmdW5jdGlvbiBwb2ludGVyIGFyZ3VtZW50cy4KIAorQGl0ZW0gbm9fcGx0 CitAY2luZGV4IEBjb2Rle25vX3BsdH0gZnVuY3Rpb24gYXR0cmlidXRlCitU aGUgQGNvZGV7bm9fcGx0fSBhdHRyaWJ1dGUgaXMgdXNlZCB0byBpbmZvcm0g dGhlIGNvbXBpbGVyIHRoYXQgYSBjYWxscwordG8gdGhlIGZ1bmN0aW9uIHNo b3VsZCBub3QgdXNlIHRoZSBQTFQuICBGb3IgZXhhbXBsZSwgZXh0ZXJuYWwg ZnVuY3Rpb25zCitkZWZpbmVkIGluIHNoYXJlZCBvYmplY3RzIGFyZSBjYWxs ZWQgZnJvbSB0aGUgZXhlY3V0YWJsZSB1c2luZyB0aGUgUExULgorVGhpcyBh dHRyaWJ1dGUgb24gdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGNhbGxzIHRo ZXNlIGZ1bmN0aW9ucyBpbmRpcmVjdGx5CityYXRoZXIgdGhhbiBnb2luZyB2 aWEgdGhlIFBMVC4gIFRoaXMgaXMgc2ltaWxhciB0byBAb3B0aW9uey1mbm8t cGx0fSBidXQKK2lzIG9ubHkgYXBwbGljYWJsZSB0byBjYWxscyB0byB0aGUg ZnVuY3Rpb24gbWFya2VkIHdpdGggdGhpcyBhdHRyaWJ1dGUuCisKIEBpdGVt IG9wdGltaXplCiBAY2luZGV4IEBjb2Rle29wdGltaXplfSBmdW5jdGlvbiBh dHRyaWJ1dGUKIFRoZSBAY29kZXtvcHRpbWl6ZX0gYXR0cmlidXRlIGlzIHVz ZWQgdG8gc3BlY2lmeSB0aGF0IGEgZnVuY3Rpb24gaXMgdG8KSW5kZXg6IHRl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQtMS5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9w bHQtMS5jCShyZXZpc2lvbiAwKQorKysgdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9ub3BsdC0xLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBA QAorLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHg4Nl82NC0qLWxpbnV4 KiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZuby1waWMiIH0gKi8KKwor X19hdHRyaWJ1dGVfXyAoKG5vX3BsdCkpCit2b2lkIGZvbygpOworCitpbnQg bWFpbigpCit7CisgIGZvbygpOworICByZXR1cm4gMDsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXVxcKi4qZm9v LipAR09UUENSRUxcXCglcmlwXFwpIiB9IH0gKi8gCkluZGV4OiB0ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L25vcGx0LTIuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L25vcGx0LTIu YwkocmV2aXNpb24gMCkKKysrIHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv bm9wbHQtMi5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB4ODZfNjQtKi1saW51eCogfSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLworCisK K19fYXR0cmlidXRlX18gKChub19wbHQpKQoraW50IGZvbygpOworCitpbnQg bWFpbigpCit7CisgIHJldHVybiBmb28oKTsKK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdXFwqLipmb28uKkBHT1RQ Q1JFTFxcKCVyaXBcXCkiIH0gfSAqLyAKSW5kZXg6IHRlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvbm9wbHQtMy5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQtMy5jCShyZXZp c2lvbiAwKQorKysgdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9ub3BsdC0z LmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorLyogeyBkZy1k byBjb21waWxlIHsgdGFyZ2V0IHg4Nl82NC0qLWxpbnV4KiB9IH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLWZuby1waWMgLWZuby1wbHQiIH0gKi8KKwordm9p ZCBmb28oKTsKKworaW50IG1haW4oKQoreworICBmb28oKTsKKyAgcmV0dXJu IDA7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2Fs bFxbIFx0XF1cXCouKmZvby4qQEdPVFBDUkVMXFwoJXJpcFxcKSIgfSB9ICov IApJbmRleDogdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9ub3BsdC00LmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9ub3BsdC00LmMJKHJldmlzaW9uIDApCisrKyB0ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L25vcGx0LTQuYwkod29ya2luZyBjb3B5KQpAQCAt MCwwICsxLDExIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeDg2 XzY0LSotbGludXgqIH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLWZu by1waWMgLWZuby1wbHQiIH0gKi8KKworaW50IGZvbygpOworCitpbnQgbWFp bigpCit7CisgIHJldHVybiBmb28oKTsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdXFwqLipmb28uKkBHT1RQQ1JF TFxcKCVyaXBcXCkiIH0gfSAqLwo= --20cf307f3aaa04ce6905178e623c--