From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25303 invoked by alias); 5 Aug 2011 18:11:00 -0000 Received: (qmail 25293 invoked by uid 22791); 5 Aug 2011 18:10:58 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_CP,TW_XS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.44.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 05 Aug 2011 18:10:42 +0000 Received: from wpaz21.hot.corp.google.com (wpaz21.hot.corp.google.com [172.24.198.85]) by smtp-out.google.com with ESMTP id p75IAfnj026769 for ; Fri, 5 Aug 2011 11:10:41 -0700 Received: from gyf2 (gyf2.prod.google.com [10.243.50.66]) by wpaz21.hot.corp.google.com with ESMTP id p75IAeIm022631 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Fri, 5 Aug 2011 11:10:40 -0700 Received: by gyf2 with SMTP id 2so3658146gyf.25 for ; Fri, 05 Aug 2011 11:10:40 -0700 (PDT) Received: by 10.150.254.18 with SMTP id b18mr3428990ybi.373.1312567840486; Fri, 05 Aug 2011 11:10:40 -0700 (PDT) Received: by 10.150.254.18 with SMTP id b18mr3428984ybi.373.1312567840307; Fri, 05 Aug 2011 11:10:40 -0700 (PDT) MIME-Version: 1.0 Received: by 10.151.48.15 with HTTP; Fri, 5 Aug 2011 11:10:09 -0700 (PDT) From: Paul Pluzhnikov Date: Fri, 05 Aug 2011 18:11:00 -0000 Message-ID: Subject: [patch] Implement qXfer:libraries for Linux/gdbserver [Was: Re: [RFC] Make target_read_string faster over high-latency links.] To: Jan Kratochvil Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd35910dd790104a9c60348 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-08/txt/msg00119.txt.bz2 --000e0cd35910dd790104a9c60348 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1929 On Tue, Jul 26, 2011 at 1:36 AM, Jan Kratochvil wrote: > On Fri, 15 Jul 2011 20:07:48 +0200, Paul Pluzhnikov wrote: >> This is GDB walking through the shared library list, and reading shared >> library names from gdbserver via target_read_string 4 bytes at a time ;-( > > Just that you do not mention supporting qXfer:libraries:read also on GNU/Linux > platforms (currently used only on MS-Windows) That sounds like an excellent idea: it reduces many many packets with just one. > that is to move solib-svr4.c to gdb/common/ etc. Moving solib-svr4.c to gdb/common doesn't appear necessary: the parts that I would have used in gdbserver/linux-low.c are quite small, and not easily re-usable. Tested on Linux/x86_64 native, and with gdbserver (x86_64) against x86_64 and i686 inferiors. No regressions. Thanks, -- Paul Pluzhnikov 2011-08-05 Paul Pluzhnikov * solib-svr4.c (library_list_start_segment): New function. (library_list_start_library, library_list_end_library): Likewise. (library_list_start_list): Likewise. (segment_attributes, library_children): New variables. (library_attributes, library_list_children): Likewise. (library_list_attributes, library_list_elements): Likewise. (svr4_free_so): Moved to here. (svr4_free_library_list, svr4_parse_libraries): New functions. (svr4_current_sos_via_xfer_libraries): Likewise. (svr4_current_sos): Adjust. gdbserver/ChangeLog: 2011-08-05 Paul Pluzhnikov * linux-low.c (linux_add_process): Adjust. (get_phdr_phnum_from_proc_auxv, get_dynamic): New functions. (get_r_debug, read_one_ptr): Likewise. (struct link_map_offsets): New struct decl. (linux_qxfer_libraries): New function. (struct linux_target_ops): Adjust. * linux-low.h (struct process_info_private): New member. * server.c (handle_qxfer_libraries): Adjust. * target.h (struct target_ops): New member. --000e0cd35910dd790104a9c60348 Content-Type: text/plain; charset=US-ASCII; name="gdb-solib-list-20110805-2.txt" Content-Disposition: attachment; filename="gdb-solib-list-20110805-2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqzgydoy0 Content-length: 24364 SW5kZXg6IHNvbGliLXN2cjQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3NvbGliLXN2cjQuYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xNTIKZGlmZiAtdSAtcCAtcjEuMTUyIHNvbGli LXN2cjQuYwotLS0gc29saWItc3ZyNC5jCTUgQXVnIDIwMTEgMTU6MTc6MjMg LTAwMDAJMS4xNTIKKysrIHNvbGliLXN2cjQuYwk1IEF1ZyAyMDExIDE3OjU2 OjI0IC0wMDAwCkBAIC0xMDYsNiArMTA2LDIwMSBAQCBzdGF0aWMgY29uc3Qg IGNoYXIgKiBjb25zdCBtYWluX25hbWVfbGlzCiAgIE5VTEwKIH07CiAKKwor I2lmIGRlZmluZWQoSEFWRV9MSUJFWFBBVCkKKworI2luY2x1ZGUgInhtbC1z dXBwb3J0LmgiCisKKy8qIEhhbmRsZSB0aGUgc3RhcnQgb2YgYSA8c2VnbWVu dD4gZWxlbWVudC4gICovCisKK3N0YXRpYyB2b2lkCitsaWJyYXJ5X2xpc3Rf c3RhcnRfc2VnbWVudCAoc3RydWN0IGdkYl94bWxfcGFyc2VyICpwYXJzZXIs CisJCQkgICAgY29uc3Qgc3RydWN0IGdkYl94bWxfZWxlbWVudCAqZWxlbWVu dCwKKwkJCSAgICB2b2lkICp1c2VyX2RhdGEsIFZFQyhnZGJfeG1sX3ZhbHVl X3MpICphdHRyaWJ1dGVzKQoreworICBVTE9OR0VTVCAqYWRkcmVzc19wID0g eG1sX2ZpbmRfYXR0cmlidXRlIChhdHRyaWJ1dGVzLCAiYWRkcmVzcyIpLT52 YWx1ZTsKKyAgQ09SRV9BRERSIGFkZHJlc3MgPSAoQ09SRV9BRERSKSAqYWRk cmVzc19wOworICBzdHJ1Y3Qgc29fbGlzdCAqKnNvX2xpc3QgPSB1c2VyX2Rh dGE7CisKKyAgKCpzb19saXN0KS0+bG1faW5mby0+bF9hZGRyID0gYWRkcmVz czsKK30KKworLyogSGFuZGxlIHRoZSBzdGFydCBvZiBhIDxsaWJyYXJ5PiBl bGVtZW50LiAgTm90ZTogbmV3IGVsZW1lbnRzIGFyZSBhZGRlZAorICAgYXQg dGhlIGhlYWQgb2YgdGhlIGxpc3QgKGkuZS4gdGhlIGxpc3QgaXMgYnVpbHQg aW4gcmV2ZXJzZSBvcmRlcikuICAqLworCitzdGF0aWMgdm9pZAorbGlicmFy eV9saXN0X3N0YXJ0X2xpYnJhcnkgKHN0cnVjdCBnZGJfeG1sX3BhcnNlciAq cGFyc2VyLAorCQkJICAgIGNvbnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQg KmVsZW1lbnQsCisJCQkgICAgdm9pZCAqdXNlcl9kYXRhLCBWRUMoZ2RiX3ht bF92YWx1ZV9zKSAqYXR0cmlidXRlcykKK3sKKyAgY29uc3QgY2hhciAqbmFt ZSA9IHhtbF9maW5kX2F0dHJpYnV0ZSAoYXR0cmlidXRlcywgIm5hbWUiKS0+ dmFsdWU7CisgIHN0cnVjdCBzb19saXN0ICpuZXdfZWxlbSwgKipzb19saXN0 ID0gdXNlcl9kYXRhOworCisgIG5ld19lbGVtID0gWFpBTExPQyAoc3RydWN0 IHNvX2xpc3QpOworICBuZXdfZWxlbS0+bmV4dCA9ICpzb19saXN0OworICBu ZXdfZWxlbS0+bG1faW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBsbV9pbmZvKTsK KyAgc3RyY3B5IChuZXdfZWxlbS0+c29fb3JpZ2luYWxfbmFtZSwgbmFtZSk7 CisgIHN0cmNweSAobmV3X2VsZW0tPnNvX25hbWUsIG5hbWUpOworCisgICpz b19saXN0ID0gbmV3X2VsZW07Cit9CisKK3N0YXRpYyB2b2lkCitsaWJyYXJ5 X2xpc3RfZW5kX2xpYnJhcnkgKHN0cnVjdCBnZGJfeG1sX3BhcnNlciAqcGFy c2VyLAorCQkJICBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50ICplbGVt ZW50LAorCQkJICB2b2lkICp1c2VyX2RhdGEsIGNvbnN0IGNoYXIgKmJvZHlf dGV4dCkKK3sKKyAgc3RydWN0IHNvX2xpc3QgKipzb19saXN0ID0gdXNlcl9k YXRhOworCisgIGlmICgoKnNvX2xpc3QpLT5sbV9pbmZvLT5sX2FkZHIgPT0g MCkKKyAgICBnZGJfeG1sX2Vycm9yIChwYXJzZXIsIF8oIk5vIHNlZ21lbnQg ZGVmaW5lZCBmb3IgJXMiKSwKKwkJICAgKCpzb19saXN0KS0+c29fbmFtZSk7 Cit9CisKKworLyogSGFuZGxlIHRoZSBzdGFydCBvZiBhIDxsaWJyYXJ5LWxp c3Q+IGVsZW1lbnQuICAqLworCitzdGF0aWMgdm9pZAorbGlicmFyeV9saXN0 X3N0YXJ0X2xpc3QgKHN0cnVjdCBnZGJfeG1sX3BhcnNlciAqcGFyc2VyLAor CQkJIGNvbnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgKmVsZW1lbnQsCisJ CQkgdm9pZCAqdXNlcl9kYXRhLCBWRUMoZ2RiX3htbF92YWx1ZV9zKSAqYXR0 cmlidXRlcykKK3sKKyAgY2hhciAqdmVyc2lvbiA9IHhtbF9maW5kX2F0dHJp YnV0ZSAoYXR0cmlidXRlcywgInZlcnNpb24iKS0+dmFsdWU7CisKKyAgaWYg KHN0cmNtcCAodmVyc2lvbiwgIjEuMCIpICE9IDApCisgICAgZ2RiX3htbF9l cnJvciAocGFyc2VyLAorCQkgICBfKCJMaWJyYXJ5IGxpc3QgaGFzIHVuc3Vw cG9ydGVkIHZlcnNpb24gXCIlc1wiIiksCisJCSAgIHZlcnNpb24pOworfQor CisKKy8qIFRoZSBhbGxvd2VkIGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzIGZv ciBhbiBYTUwgbGlicmFyeSBsaXN0LgorICAgVGhlIHJvb3QgZWxlbWVudCBp cyBhIDxsaWJyYXJ5LWxpc3Q+LiAgKi8KKworc3RhdGljIGNvbnN0IHN0cnVj dCBnZGJfeG1sX2F0dHJpYnV0ZSBzZWdtZW50X2F0dHJpYnV0ZXNbXSA9IHsK KyAgeyAiYWRkcmVzcyIsIEdEQl9YTUxfQUZfTk9ORSwgZ2RiX3htbF9wYXJz ZV9hdHRyX3Vsb25nZXN0LCBOVUxMIH0sCisgIHsgTlVMTCwgR0RCX1hNTF9B Rl9OT05FLCBOVUxMLCBOVUxMIH0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZ2RiX3htbF9lbGVtZW50IGxpYnJhcnlfY2hpbGRyZW5bXSA9IHsKKyAg eyAic2VnbWVudCIsIHNlZ21lbnRfYXR0cmlidXRlcywgTlVMTCwKKyAgICBH REJfWE1MX0VGX05PTkUsIGxpYnJhcnlfbGlzdF9zdGFydF9zZWdtZW50LCBO VUxMIH0sCisgIHsgTlVMTCwgTlVMTCwgTlVMTCwgR0RCX1hNTF9FRl9OT05F LCBOVUxMLCBOVUxMIH0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2Ri X3htbF9hdHRyaWJ1dGUgbGlicmFyeV9hdHRyaWJ1dGVzW10gPSB7CisgIHsg Im5hbWUiLCBHREJfWE1MX0FGX05PTkUsIE5VTEwsIE5VTEwgfSwKKyAgeyBO VUxMLCBHREJfWE1MX0FGX05PTkUsIE5VTEwsIE5VTEwgfQorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgbGlicmFyeV9saXN0 X2NoaWxkcmVuW10gPSB7CisgIHsgImxpYnJhcnkiLCBsaWJyYXJ5X2F0dHJp YnV0ZXMsIGxpYnJhcnlfY2hpbGRyZW4sCisgICAgR0RCX1hNTF9FRl9SRVBF QVRBQkxFIHwgR0RCX1hNTF9FRl9PUFRJT05BTCwKKyAgICBsaWJyYXJ5X2xp c3Rfc3RhcnRfbGlicmFyeSwgbGlicmFyeV9saXN0X2VuZF9saWJyYXJ5IH0s CisgIHsgTlVMTCwgTlVMTCwgTlVMTCwgR0RCX1hNTF9FRl9OT05FLCBOVUxM LCBOVUxMIH0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9h dHRyaWJ1dGUgbGlicmFyeV9saXN0X2F0dHJpYnV0ZXNbXSA9IHsKKyAgeyAi dmVyc2lvbiIsIEdEQl9YTUxfQUZfTk9ORSwgTlVMTCwgTlVMTCB9LAorICB7 IE5VTEwsIEdEQl9YTUxfQUZfTk9ORSwgTlVMTCwgTlVMTCB9Cit9OworCitz dGF0aWMgY29uc3Qgc3RydWN0IGdkYl94bWxfZWxlbWVudCBsaWJyYXJ5X2xp c3RfZWxlbWVudHNbXSA9IHsKKyAgeyAibGlicmFyeS1saXN0IiwgbGlicmFy eV9saXN0X2F0dHJpYnV0ZXMsIGxpYnJhcnlfbGlzdF9jaGlsZHJlbiwKKyAg ICBHREJfWE1MX0VGX05PTkUsIGxpYnJhcnlfbGlzdF9zdGFydF9saXN0LCBO VUxMIH0sCisgIHsgTlVMTCwgTlVMTCwgTlVMTCwgR0RCX1hNTF9FRl9OT05F LCBOVUxMLCBOVUxMIH0KK307CisKK3N0YXRpYyB2b2lkCitzdnI0X2ZyZWVf c28gKHN0cnVjdCBzb19saXN0ICpzbykKK3sKKyAgeGZyZWUgKHNvLT5sbV9p bmZvLT5sbSk7CisgIHhmcmVlIChzby0+bG1faW5mbyk7Cit9CisKKy8qIEZy ZWUgc29fbGlzdCBidWlsdCBzbyBmYXIgKGNhbGxlZCB2aWEgY2xlYW51cCku ICAqLworCitzdGF0aWMgdm9pZAorc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAo dm9pZCAqcF9saXN0KQoreworICBzdHJ1Y3Qgc29fbGlzdCAqbGlzdCA9ICoo c3RydWN0IHNvX2xpc3QgKiopIHBfbGlzdDsKKyAgd2hpbGUgKGxpc3QgIT0g TlVMTCkKKyAgICB7CisgICAgICBzdHJ1Y3Qgc29fbGlzdCAqbmV4dCA9IGxp c3QtPm5leHQ7CisKKyAgICAgIHN2cjRfZnJlZV9zbyAobGlzdCk7CisgICAg ICBsaXN0ID0gbmV4dDsKKyAgICB9Cit9CisKKy8qIFBhcnNlIHFYZmVyOmxp YnJhcmllczpyZWFkIHBhY2tldCBpbnRvIHNvX2xpc3QuICAqLworCitzdGF0 aWMgc3RydWN0IHNvX2xpc3QgKgorc3ZyNF9wYXJzZV9saWJyYXJpZXMgKGNv bnN0IGNoYXIgKmRvY3VtZW50KQoreworICBzdHJ1Y3Qgc29fbGlzdCAqcmVz dWx0ID0gTlVMTDsKKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG8gPSBtYWtl X2NsZWFudXAgKHN2cjRfZnJlZV9saWJyYXJ5X2xpc3QsCisJCQkJCSAgJnJl c3VsdCk7CisKKyAgaWYgKGdkYl94bWxfcGFyc2VfcXVpY2sgKF8oInRhcmdl dCBsaWJyYXJ5IGxpc3QiKSwgImxpYnJhcnktbGlzdC5kdGQiLAorCQkJICAg bGlicmFyeV9saXN0X2VsZW1lbnRzLCBkb2N1bWVudCwgJnJlc3VsdCkgPT0g MCkKKyAgICB7CisgICAgICBzdHJ1Y3Qgc29fbGlzdCAqcHJldjsKKworICAg ICAgLyogUGFyc2VkIHN1Y2Nlc3NmdWxseSwga2VlcCB0aGUgcmVzdWx0LiAg Ki8KKyAgICAgIGRpc2NhcmRfY2xlYW51cHMgKGJhY2tfdG8pOworCisgICAg ICAvKiBSZXZlcnNlIHRoZSBsaXN0IC0tIGl0IHdhcyBidWlsdCBpbiByZXZl cnNlIG9yZGVyLiAgKi8KKyAgICAgIHByZXYgPSBOVUxMOworICAgICAgd2hp bGUgKHJlc3VsdCkKKwl7CisJICBzdHJ1Y3Qgc29fbGlzdCAqbmV4dCA9IHJl c3VsdC0+bmV4dDsKKworCSAgcmVzdWx0LT5uZXh0ID0gcHJldjsKKwkgIHBy ZXYgPSByZXN1bHQ7CisJICByZXN1bHQgPSBuZXh0OworCX0KKyAgICAgIHJl dHVybiBwcmV2OworICAgIH0KKworICBkb19jbGVhbnVwcyAoYmFja190byk7 CisgIHJldHVybiBOVUxMOworfQorCisvKiBBdHRlbXB0IHRvIGdldCBzb19s aXN0IGZyb20gdGFyZ2V0IHZpYSBxWGZlcjpsaWJyYXJpZXM6cmVhZCBwYWNr ZXQuCisgICBSZXR1cm4gTlVMTCBpZiBwYWNrZXQgbm90IHN1cHBvcnRlZCwg b3IgY29udGFpbnMgbm8gbGlicmFyaWVzLiAgKi8KKworc3RhdGljIHN0cnVj dCBzb19saXN0ICoKK3N2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFy aWVzICgpCit7CisgIGNoYXIgKmxpYnJhcnlfZG9jdW1lbnQ7CisgIHN0cnVj dCBzb19saXN0ICpyZXN1bHQ7CisgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3Rv OworCisgIC8qIEZldGNoIHRoZSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMu ICAqLworICBsaWJyYXJ5X2RvY3VtZW50ID0gdGFyZ2V0X3JlYWRfc3RyYWxs b2MgKCZjdXJyZW50X3RhcmdldCwKKwkJCQkJICAgVEFSR0VUX09CSkVDVF9M SUJSQVJJRVMsCisJCQkJCSAgIE5VTEwpOworICBpZiAobGlicmFyeV9kb2N1 bWVudCA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOworCisgIGJhY2tfdG8g PSBtYWtlX2NsZWFudXAgKHhmcmVlLCBsaWJyYXJ5X2RvY3VtZW50KTsKKyAg cmVzdWx0ID0gc3ZyNF9wYXJzZV9saWJyYXJpZXMgKGxpYnJhcnlfZG9jdW1l bnQpOworICBkb19jbGVhbnVwcyAoYmFja190byk7CisKKyAgcmV0dXJuIHJl c3VsdDsKK30KKworI2Vsc2UKKworc3RhdGljIHN0cnVjdCBzb19saXN0ICoK K3N2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFyaWVzICgpCit7Cisg IHJldHVybiBOVUxMOworfQorCisjZW5kaWYKKwogLyogUmV0dXJuIG5vbi16 ZXJvIGlmIEdEQl9TT19OQU1FIGFuZCBJTkZFUklPUl9TT19OQU1FIHJlcHJl c2VudAogICAgdGhlIHNhbWUgc2hhcmVkIGxpYnJhcnkuICAqLwogCkBAIC0x MTM2LDYgKzEzMzEsMTAgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKICAg Q09SRV9BRERSIGxkc29tYXAgPSAwOwogICBzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvOwogCisgIGhlYWQgPSBzdnI0X2N1cnJlbnRfc29zX3ZpYV94ZmVyX2xp YnJhcmllcyAoKTsKKyAgaWYgKGhlYWQgIT0gTlVMTCkKKyAgICByZXR1cm4g aGVhZDsKKwogICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKIAogICAvKiBB bHdheXMgbG9jYXRlIHRoZSBkZWJ1ZyBzdHJ1Y3QsIGluIGNhc2UgaXQgaGFz IG1vdmVkLiAgKi8KQEAgLTIyNDksMTMgKzI0NDgsNiBAQCBzdnI0X2NsZWFy X3NvbGliICh2b2lkKQogICBpbmZvLT5kZWJ1Z19sb2FkZXJfbmFtZSA9IE5V TEw7CiB9CiAKLXN0YXRpYyB2b2lkCi1zdnI0X2ZyZWVfc28gKHN0cnVjdCBz b19saXN0ICpzbykKLXsKLSAgeGZyZWUgKHNvLT5sbV9pbmZvLT5sbSk7Ci0g IHhmcmVlIChzby0+bG1faW5mbyk7Ci19Ci0KIAogLyogQ2xlYXIgYW55IGJp dHMgb2YgQUREUiB0aGF0IHdvdWxkbid0IGZpdCBpbiBhIHRhcmdldC1mb3Jt YXQKICAgIGRhdGEgcG9pbnRlci4gICJEYXRhIHBvaW50ZXIiIGhlcmUgcmVm ZXJzIHRvIHdoYXRldmVyIHNvcnQgb2YKSW5kZXg6IGdkYnNlcnZlci9saW51 eC1sb3cuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4xNzMKZGlmZiAtdSAtcCAtcjEuMTczIGxpbnV4LWxv dy5jCi0tLSBnZGJzZXJ2ZXIvbGludXgtbG93LmMJMjEgSnVsIDIwMTEgMjM6 NDY6MTIgLTAwMDAJMS4xNzMKKysrIGdkYnNlcnZlci9saW51eC1sb3cuYwk1 IEF1ZyAyMDExIDE3OjU2OjI0IC0wMDAwCkBAIC0yNjQsNiArMjY0LDcgQEAg bGludXhfYWRkX3Byb2Nlc3MgKGludCBwaWQsIGludCBhdHRhY2hlZAogCiAg IHByb2MgPSBhZGRfcHJvY2VzcyAocGlkLCBhdHRhY2hlZCk7CiAgIHByb2Mt PnByaXZhdGUgPSB4Y2FsbG9jICgxLCBzaXplb2YgKCpwcm9jLT5wcml2YXRl KSk7CisgIHByb2MtPnByaXZhdGUtPnJfZGVidWcgPSAoQ09SRV9BRERSKSAt MTsKIAogICBpZiAodGhlX2xvd190YXJnZXQubmV3X3Byb2Nlc3MgIT0gTlVM TCkKICAgICBwcm9jLT5wcml2YXRlLT5hcmNoX3ByaXZhdGUgPSB0aGVfbG93 X3RhcmdldC5uZXdfcHJvY2VzcyAoKTsKQEAgLTQ3NTUsNiArNDc1NiwzNDMg QEAgbGludXhfZW1pdF9vcHMgKHZvaWQpCiAgICAgcmV0dXJuIE5VTEw7CiB9 CiAKKy8qIEV4dHJhY3QgJnBoZHIgYW5kIG51bV9waGRyIGluIHRoZSBpbmZl cmlvci4gIFJldHVybiAwIG9uIHN1Y2Nlc3MuICAqLworCitzdGF0aWMgaW50 CitnZXRfcGhkcl9waG51bV9mcm9tX3Byb2NfYXV4diAoY29uc3QgaW50IHBp ZCwgY29uc3QgaW50IGlzX2VsZjY0LAorCQkJICAgICAgIENPUkVfQUREUiAq cGhkcl9tZW1hZGRyLCBpbnQgKm51bV9waGRyKQoreworICBjaGFyIGZpbGVu YW1lW1BBVEhfTUFYXTsKKyAgaW50IGZkOworICBjb25zdCBpbnQgYXV4dl9z aXplID0gaXNfZWxmNjQKKyAgICA/IHNpemVvZiAoRWxmNjRfYXV4dl90KSA6 IHNpemVvZiAoRWxmMzJfYXV4dl90KTsKKyAgY2hhciBidWZbc2l6ZW9mIChF bGY2NF9hdXh2X3QpXTsgIC8qIFRoZSBsYXJnZXIgb2YgdGhlIHR3by4gICov CisKKyAgeHNucHJpbnRmIChmaWxlbmFtZSwgc2l6ZW9mIGZpbGVuYW1lLCAi L3Byb2MvJWQvYXV4diIsIHBpZCk7CisKKyAgZmQgPSBvcGVuIChmaWxlbmFt ZSwgT19SRE9OTFkpOworICBpZiAoZmQgPCAwKQorICAgIHJldHVybiAxOwor CisgICpwaGRyX21lbWFkZHIgPSAwOworICAqbnVtX3BoZHIgPSAwOworICB3 aGlsZSAocmVhZCAoZmQsIGJ1ZiwgYXV4dl9zaXplKSA9PSBhdXh2X3NpemUK KwkgJiYgKCpwaGRyX21lbWFkZHIgPT0gMCB8fCAqbnVtX3BoZHIgPT0gMCkp CisgICAgeworICAgICAgaWYgKGlzX2VsZjY0KQorCXsKKwkgIEVsZjY0X2F1 eHZfdCAqY29uc3QgYXV4ID0gKEVsZjY0X2F1eHZfdCAqKSBidWY7CisKKwkg IHN3aXRjaCAoYXV4LT5hX3R5cGUpCisJICAgIHsKKwkgICAgY2FzZSBBVF9Q SERSOgorCSAgICAgICpwaGRyX21lbWFkZHIgPSBhdXgtPmFfdW4uYV92YWw7 CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgQVRfUEhOVU06CisJICAgICAg Km51bV9waGRyID0gYXV4LT5hX3VuLmFfdmFsOworCSAgICAgIGJyZWFrOwor CSAgICB9CisJfQorICAgICAgZWxzZQorCXsKKwkgIEVsZjMyX2F1eHZfdCAq Y29uc3QgYXV4ID0gKEVsZjMyX2F1eHZfdCAqKSBidWY7CisKKwkgIHN3aXRj aCAoYXV4LT5hX3R5cGUpCisJICAgIHsKKwkgICAgY2FzZSBBVF9QSERSOgor CSAgICAgICpwaGRyX21lbWFkZHIgPSBhdXgtPmFfdW4uYV92YWw7CisJICAg ICAgYnJlYWs7CisJICAgIGNhc2UgQVRfUEhOVU06CisJICAgICAgKm51bV9w aGRyID0gYXV4LT5hX3VuLmFfdmFsOworCSAgICAgIGJyZWFrOworCSAgICB9 CisJfQorICAgIH0KKworICBjbG9zZSAoZmQpOworCisgIGlmICgqcGhkcl9t ZW1hZGRyID09IDAgfHwgKm51bV9waGRyID09IDApCisgICAgeworICAgICAg d2FybmluZyAoIlVuZXhwZWN0ZWQgbWlzc2luZyBBVF9QSERSIGFuZC9vciBB VF9QSE5VTTogIgorCSAgICAgICAicGhkcl9tZW1hZGRyID0gJWxkLCBwaGRy X251bSA9ICVkIiwKKwkgICAgICAgKGxvbmcpICpwaGRyX21lbWFkZHIsICpu dW1fcGhkcik7CisgICAgICByZXR1cm4gMjsKKyAgICB9CisKKyAgcmV0dXJu IDA7Cit9CisKKy8qIFJldHVybiAmX0RZTkFNSUMgKHZpYSBQVF9EWU5BTUlD KSBpbiB0aGUgaW5mZXJpb3IsIG9yIDAgaWYgbm90IHByZXNlbnQuICAqLwor CitzdGF0aWMgQ09SRV9BRERSCitnZXRfZHluYW1pYyAoY29uc3QgaW50IHBp ZCwgY29uc3QgaW50IGlzX2VsZjY0KQoreworICBDT1JFX0FERFIgcGhkcl9t ZW1hZGRyOworICBpbnQgbnVtX3BoZHIsIGk7CisgIHVuc2lnbmVkIGNoYXIg KnBoZHJfYnVmOworICBjb25zdCBpbnQgcGhkcl9zaXplID0gaXNfZWxmNjQg PyBzaXplb2YgKEVsZjY0X1BoZHIpIDogc2l6ZW9mIChFbGYzMl9QaGRyKTsK KworCisgIGlmIChnZXRfcGhkcl9waG51bV9mcm9tX3Byb2NfYXV4diAocGlk LCBpc19lbGY2NCwgJnBoZHJfbWVtYWRkciwgJm51bV9waGRyKSkKKyAgICBy ZXR1cm4gMDsKKworICBnZGJfYXNzZXJ0IChudW1fcGhkciA8IDEwMCk7ICAv KiBCYXNpYyBzYW5pdHkgY2hlY2suICAqLworICBwaGRyX2J1ZiA9IGFsbG9j YSAobnVtX3BoZHIgKiBwaGRyX3NpemUpOworCisgIGlmIChsaW51eF9yZWFk X21lbW9yeSAocGhkcl9tZW1hZGRyLCBwaGRyX2J1ZiwgbnVtX3BoZHIgKiBw aGRyX3NpemUpKQorICAgIHJldHVybiAwOworCisgIGZvciAoaSA9IDA7IGkg PCBudW1fcGhkcjsgaSsrKQorICAgIHsKKyAgICAgIGlmIChpc19lbGY2NCkK Kwl7CisJICBFbGY2NF9QaGRyICpjb25zdCBwID0gKEVsZjY0X1BoZHIgKikg KHBoZHJfYnVmICsgaSAqIHBoZHJfc2l6ZSk7CisKKwkgIGlmIChwLT5wX3R5 cGUgPT0gUFRfRFlOQU1JQykKKwkgICAgcmV0dXJuIHAtPnBfdmFkZHI7CisJ fQorICAgICAgZWxzZQorCXsKKwkgIEVsZjMyX1BoZHIgKmNvbnN0IHAgPSAo RWxmMzJfUGhkciAqKSAocGhkcl9idWYgKyBpICogcGhkcl9zaXplKTsKKwor CSAgaWYgKHAtPnBfdHlwZSA9PSBQVF9EWU5BTUlDKQorCSAgICByZXR1cm4g cC0+cF92YWRkcjsKKwl9CisgICAgfQorCisgIHJldHVybiAwOworfQorCisv KiBSZXR1cm4gJl9yX2RlYnVnIGluIHRoZSBpbmZlcmlvciwgb3IgMCBpZiBu b3QgcHJlc2VudC4gICovCisKK3N0YXRpYyBDT1JFX0FERFIKK2dldF9yX2Rl YnVnIChjb25zdCBpbnQgcGlkLCBjb25zdCBpbnQgaXNfZWxmNjQpCit7Cisg IENPUkVfQUREUiBkeW5hbWljX21lbWFkZHI7CisgIGNvbnN0IGludCBkeW5f c2l6ZSA9IGlzX2VsZjY0ID8gc2l6ZW9mIChFbGY2NF9EeW4pIDogc2l6ZW9m IChFbGYzMl9EeW4pOworICB1bnNpZ25lZCBjaGFyIGJ1ZltzaXplb2YgKEVs ZjY0X0R5bildOyAgLyogVGhlIGxhcmdlciBvZiB0aGUgdHdvLiAgKi8KKwor ICBkeW5hbWljX21lbWFkZHIgPSBnZXRfZHluYW1pYyAocGlkLCBpc19lbGY2 NCk7CisgIGlmIChkeW5hbWljX21lbWFkZHIgPT0gMCkKKyAgICByZXR1cm4g MDsKKworICB3aGlsZSAobGludXhfcmVhZF9tZW1vcnkgKGR5bmFtaWNfbWVt YWRkciwgYnVmLCBkeW5fc2l6ZSkgPT0gMCkKKyAgICB7CisgICAgICBpZiAo aXNfZWxmNjQpCisJeworCSAgRWxmNjRfRHluICpjb25zdCBkeW4gPSAoRWxm NjRfRHluICopIGJ1ZjsKKworCSAgaWYgKGR5bi0+ZF90YWcgPT0gRFRfREVC VUcpCisJICAgIHJldHVybiBkeW4tPmRfdW4uZF92YWw7CisKKwkgIGlmIChk eW4tPmRfdGFnID09IERUX05VTEwpCisJICAgIGJyZWFrOworCX0KKyAgICAg IGVsc2UKKwl7CisJICBFbGYzMl9EeW4gKmNvbnN0IGR5biA9IChFbGYzMl9E eW4gKikgYnVmOworCisJICBpZiAoZHluLT5kX3RhZyA9PSBEVF9ERUJVRykK KwkgICAgcmV0dXJuIGR5bi0+ZF91bi5kX3ZhbDsKKworCSAgaWYgKGR5bi0+ ZF90YWcgPT0gRFRfTlVMTCkKKwkgICAgYnJlYWs7CisJfQorCisgICAgICBk eW5hbWljX21lbWFkZHIgKz0gZHluX3NpemU7CisgICAgfQorCisgIHJldHVy biAwOworfQorCisvKiBSZWFkIG9uZSBwb2ludGVyIGZyb20gTUVNQUREUiBp biB0aGUgaW5mZXJpb3IuICAqLworCitzdGF0aWMgaW50CityZWFkX29uZV9w dHIgKENPUkVfQUREUiBtZW1hZGRyLCBDT1JFX0FERFIgKnB0ciwgaW50IHB0 cl9zaXplKQoreworICAqcHRyID0gMDsKKyAgcmV0dXJuIGxpbnV4X3JlYWRf bWVtb3J5IChtZW1hZGRyLCAodW5zaWduZWQgY2hhciAqKSBwdHIsIHB0cl9z aXplKTsKK30KKworCitzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cworICB7Cisg ICAgLyogT2Zmc2V0IGFuZCBzaXplIG9mIHJfZGVidWcucl92ZXJzaW9uLiAg Ki8KKyAgICBpbnQgcl92ZXJzaW9uX29mZnNldDsKKworICAgIC8qIE9mZnNl dCBhbmQgc2l6ZSBvZiByX2RlYnVnLnJfbWFwLiAgKi8KKyAgICBpbnQgcl9t YXBfb2Zmc2V0OworCisgICAgLyogT2Zmc2V0IHRvIGxfYWRkciBmaWVsZCBp biBzdHJ1Y3QgbGlua19tYXAuICAqLworICAgIGludCBsX2FkZHJfb2Zmc2V0 OworCisgICAgLyogT2Zmc2V0IHRvIGxfbmFtZSBmaWVsZCBpbiBzdHJ1Y3Qg bGlua19tYXAuICAqLworICAgIGludCBsX25hbWVfb2Zmc2V0OworCisgICAg LyogT2Zmc2V0IHRvIGxfbmV4dCBmaWVsZCBpbiBzdHJ1Y3QgbGlua19tYXAu ICAqLworICAgIGludCBsX25leHRfb2Zmc2V0OworCisgICAgLyogT2Zmc2V0 IHRvIGxfcHJldiBmaWVsZCBpbiBzdHJ1Y3QgbGlua19tYXAuICAqLworICAg IGludCBsX3ByZXZfb2Zmc2V0OworCisgIH07CisKKy8qIENvbnN0cnVjdCBx WGZlcjpsaWJyYXJpZXM6cmVhZCByZXBseS4gICovCisKK3N0YXRpYyBpbnQK K2xpbnV4X3F4ZmVyX2xpYnJhcmllcyAoY29uc3QgY2hhciAqYW5uZXgsIHVu c2lnbmVkIGNoYXIgKnJlYWRidWYsCisJCSAgICAgICB1bnNpZ25lZCBjb25z dCBjaGFyICp3cml0ZWJ1ZiwKKwkJICAgICAgIENPUkVfQUREUiBvZmZzZXQs IGludCBsZW4pCit7CisgIGNoYXIgKmRvY3VtZW50OworICB1bnNpZ25lZCBk b2N1bWVudF9sZW47CisgIHN0cnVjdCBwcm9jZXNzX2luZm9fcHJpdmF0ZSAq Y29uc3QgcHJpdiA9IGN1cnJlbnRfcHJvY2VzcyAoKS0+cHJpdmF0ZTsKKyAg Y2hhciBmaWxlbmFtZVtQQVRIX01BWF07CisgIGludCBwaWQsIGlzX2VsZjY0 OworCisgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyBs bW9fMzJiaXRfb2Zmc2V0cyA9CisgICAgeworICAgICAgMCwgICAgIC8qIHJf dmVyc2lvbiBvZmZzZXQuICovCisgICAgICA0LCAgICAgLyogcl9kZWJ1Zy5y X21hcCBvZmZzZXQuICAqLworICAgICAgMCwgICAgIC8qIGxfYWRkciBvZmZz ZXQgaW4gbGlua19tYXAuICAqLworICAgICAgNCwgICAgIC8qIGxfbmFtZSBv ZmZzZXQgaW4gbGlua19tYXAuICAqLworICAgICAgMTIsICAgIC8qIGxfbmV4 dCBvZmZzZXQgaW4gbGlua19tYXAuICAqLworICAgICAgMTYgICAgIC8qIGxf cHJldiBvZmZzZXQgaW4gbGlua19tYXAuICAqLworICAgIH07CisKKyAgc3Rh dGljIGNvbnN0IHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzIGxtb182NGJpdF9v ZmZzZXRzID0KKyAgICB7CisgICAgICAwLCAgICAgLyogcl92ZXJzaW9uIG9m ZnNldC4gKi8KKyAgICAgIDgsICAgICAvKiByX2RlYnVnLnJfbWFwIG9mZnNl dC4gICovCisgICAgICAwLCAgICAgLyogbF9hZGRyIG9mZnNldCBpbiBsaW5r X21hcC4gICovCisgICAgICA4LCAgICAgLyogbF9uYW1lIG9mZnNldCBpbiBs aW5rX21hcC4gICovCisgICAgICAyNCwgICAgLyogbF9uZXh0IG9mZnNldCBp biBsaW5rX21hcC4gICovCisgICAgICAzMiAgICAgLyogbF9wcmV2IG9mZnNl dCBpbiBsaW5rX21hcC4gICovCisgICAgfTsKKyAgY29uc3Qgc3RydWN0IGxp bmtfbWFwX29mZnNldHMgKmxtbzsKKworICBpZiAod3JpdGVidWYgIT0gTlVM TCkKKyAgICByZXR1cm4gLTI7CisgIGlmIChyZWFkYnVmID09IE5VTEwpCisg ICAgcmV0dXJuIC0xOworCisgIHBpZCA9IGx3cGlkX29mIChnZXRfdGhyZWFk X2x3cCAoY3VycmVudF9pbmZlcmlvcikpOworICB4c25wcmludGYgKGZpbGVu YW1lLCBzaXplb2YgZmlsZW5hbWUsICIvcHJvYy8lZC9leGUiLCBwaWQpOwor ICBpc19lbGY2NCA9IGVsZl82NF9maWxlX3AgKGZpbGVuYW1lKTsKKyAgbG1v ID0gaXNfZWxmNjQgPyAmbG1vXzY0Yml0X29mZnNldHMgOiAmbG1vXzMyYml0 X29mZnNldHM7CisKKyAgaWYgKHByaXYtPnJfZGVidWcgPT0gKENPUkVfQURE UikgLTEpCisgICAgcHJpdi0+cl9kZWJ1ZyA9IGdldF9yX2RlYnVnIChwaWQs IGlzX2VsZjY0KTsKKworICBnZGJfYXNzZXJ0IChwcml2LT5yX2RlYnVnICE9 IChDT1JFX0FERFIpIC0xKTsKKworICBpZiAocHJpdi0+cl9kZWJ1ZyA9PSAw KQorICAgIHsKKyAgICAgIGRvY3VtZW50ID0geHN0cmR1cCAoIjxsaWJyYXJ5 LWxpc3QvPlxuIik7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgaW50 IGFsbG9jYXRlZCA9IDEwMjQ7CisgICAgICBjaGFyICpwOworICAgICAgY29u c3QgaW50IHB0cl9zaXplID0gaXNfZWxmNjQgPyA4IDogNDsKKyAgICAgIENP UkVfQUREUiBsbV9hZGRyLCBsbV9wcmV2LCBsX25hbWUsIGxfYWRkciwgbF9u ZXh0LCBsX3ByZXY7CisgICAgICBpbnQgcl92ZXJzaW9uOworCisgICAgICBk b2N1bWVudCA9IHhtYWxsb2MgKGFsbG9jYXRlZCk7CisgICAgICBzdHJjcHkg KGRvY3VtZW50LCAiPGxpYnJhcnktbGlzdD4iKTsKKyAgICAgIHAgPSBkb2N1 bWVudCArIHN0cmxlbiAoZG9jdW1lbnQpOworCisgICAgICByX3ZlcnNpb24g PSAwOworICAgICAgaWYgKGxpbnV4X3JlYWRfbWVtb3J5IChwcml2LT5yX2Rl YnVnICsgbG1vLT5yX3ZlcnNpb25fb2Zmc2V0LAorCQkJICAgICAodW5zaWdu ZWQgY2hhciAqKSAmcl92ZXJzaW9uLAorCQkJICAgICBzaXplb2YgKHJfdmVy c2lvbikpICE9IDAKKwkgIHx8IHJfdmVyc2lvbiAhPSAxKQorCXsKKwkgIHdh cm5pbmcgKCJ1bmV4cGVjdGVkIHJfZGVidWcgdmVyc2lvbiAlZCIsIHJfdmVy c2lvbik7CisJICBnb3RvIGRvbmU7CisJfQorCisgICAgICBpZiAocmVhZF9v bmVfcHRyIChwcml2LT5yX2RlYnVnICsgbG1vLT5yX21hcF9vZmZzZXQsCisJ CQkmbG1fYWRkciwgcHRyX3NpemUpICE9IDApCisJeworCSAgd2FybmluZyAo InVuYWJsZSB0byByZWFkIHJfbWFwIGZyb20gMHglbHgiLAorCQkgICAobG9u ZykgcHJpdi0+cl9kZWJ1ZyArIGxtby0+cl9tYXBfb2Zmc2V0KTsKKwkgIGdv dG8gZG9uZTsKKwl9CisKKyAgICAgIGxtX3ByZXYgPSAwOworICAgICAgd2hp bGUgKHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9uYW1lX29mZnNl dCwKKwkJCSAgICZsX25hbWUsIHB0cl9zaXplKSA9PSAwCisJICAgICAmJiBy ZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfYWRkcl9vZmZzZXQsCisJ CQkgICAgICAmbF9hZGRyLCBwdHJfc2l6ZSkgPT0gMAorCSAgICAgJiYgcmVh ZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX3ByZXZfb2Zmc2V0LAorCQkJ ICAgICAgJmxfcHJldiwgcHRyX3NpemUpID09IDAKKwkgICAgICYmIHJlYWRf b25lX3B0ciAobG1fYWRkciArIGxtby0+bF9uZXh0X29mZnNldCwKKwkJCSAg ICAgICZsX25leHQsIHB0cl9zaXplKSA9PSAwKQorCXsKKwkgIHVuc2lnbmVk IGNoYXIgbGlibmFtZVtQQVRIX01BWF07CisKKwkgIGlmIChsbV9wcmV2ICE9 IGxfcHJldikKKwkgICAgeworCSAgICAgIHdhcm5pbmcgKCJjb3JydXB0IHNv bGliIGNoYWluOiAweCVseCAhPSAweCVseCIsCisJCSAgICAgICAobG9uZykg bG1fcHJldiwgKGxvbmcpIGxfcHJldik7CisJICAgICAgYnJlYWs7CisJICAg IH0KKworCSAgLyogTm90IGNoZWNraW5nIGZvciBlcnJvciBiZWNhdXNlIHJl YWRpbmcgbWF5IHN0b3AgYmVmb3JlCisJICAgICB3ZSd2ZSBnb3QgUEFUSF9N QVggd29ydGggb2YgY2hhcmFjdGVycy4gICovCisJICBsaWJuYW1lWzBdID0g J1wwJzsKKwkgIGxpbnV4X3JlYWRfbWVtb3J5IChsX25hbWUsIGxpYm5hbWUs IHNpemVvZiAobGlibmFtZSkpOworCSAgaWYgKGxpYm5hbWVbMF0gIT0gJ1ww JykKKwkgICAgeworCSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKChjaGFy ICopIGxpYm5hbWUpOworCSAgICAgIGNoYXIgKm5hbWU7CisKKwkgICAgICB3 aGlsZSAoYWxsb2NhdGVkIDwgcCAtIGRvY3VtZW50ICsgbGVuICsgMTAwKQor CQl7CisJCSAgLyogRXhwYW5kIHRvIGd1YXJhbnRlZSBzdWZmaWNpZW50IHN0 b3JhZ2UuICAqLworCQkgIHVpbnRwdHJfdCBkb2N1bWVudF9sZW4gPSBwIC0g ZG9jdW1lbnQ7CisKKwkJICBkb2N1bWVudCA9IHhyZWFsbG9jIChkb2N1bWVu dCwgMiAqIGFsbG9jYXRlZCk7CisJCSAgYWxsb2NhdGVkICo9IDI7CisJCSAg cCA9IGRvY3VtZW50ICsgZG9jdW1lbnRfbGVuOworCQl9CisKKwkgICAgICBz dHJjcHkgKHAsICI8bGlicmFyeSBuYW1lPVwiIik7CisJICAgICAgcCA9IHAg KyBzdHJsZW4gKHApOworCSAgICAgIG5hbWUgPSB4bWxfZXNjYXBlX3RleHQg KChjaGFyICopIGxpYm5hbWUpOworCSAgICAgIHN0cmNweSAocCwgbmFtZSk7 CisJICAgICAgZnJlZSAobmFtZSk7CisJICAgICAgcCA9IHAgKyBzdHJsZW4g KHApOworCSAgICAgIHN0cmNweSAocCwgIlwiPjxzZWdtZW50IGFkZHJlc3M9 XCIiKTsKKwkgICAgICBwID0gcCArIHN0cmxlbiAocCk7CisJICAgICAgc3By aW50ZiAocCwgIjB4JWx4IiwgKGxvbmcpIGxfYWRkcik7CisJICAgICAgcCA9 IHAgKyBzdHJsZW4gKHApOworCSAgICAgIHN0cmNweSAocCwgIlwiLz48L2xp YnJhcnk+Iik7CisJICAgICAgcCA9IHAgKyBzdHJsZW4gKHApOworCSAgICB9 CisKKwkgIGlmIChsX25leHQgPT0gMCkKKwkgICAgYnJlYWs7CisKKwkgIGxt X3ByZXYgPSBsbV9hZGRyOworCSAgbG1fYWRkciA9IGxfbmV4dDsKKwl9Cisg ICAgZG9uZToKKyAgICAgIHN0cmNweSAocCwgIjwvbGlicmFyeS1saXN0PiIp OworICAgIH0KKworICBkb2N1bWVudF9sZW4gPSBzdHJsZW4gKGRvY3VtZW50 ICsgb2Zmc2V0KTsKKyAgaWYgKGxlbiA+IGRvY3VtZW50X2xlbikKKyAgICBs ZW4gPSBkb2N1bWVudF9sZW47CisKKyAgbWVtY3B5IChyZWFkYnVmLCBkb2N1 bWVudCArIG9mZnNldCwgbGVuKTsKKyAgeGZyZWUgKGRvY3VtZW50KTsKKwor ICByZXR1cm4gbGVuOworfQorCisKIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29w cyBsaW51eF90YXJnZXRfb3BzID0gewogICBsaW51eF9jcmVhdGVfaW5mZXJp b3IsCiAgIGxpbnV4X2F0dGFjaCwKQEAgLTQ4MTMsNyArNTE1MSw4IEBAIHN0 YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyBsaW51eF90YXJnZXRfb3AKICAgbGlu dXhfY2FuY2VsX2JyZWFrcG9pbnRzLAogICBsaW51eF9zdGFiaWxpemVfdGhy ZWFkcywKICAgbGludXhfaW5zdGFsbF9mYXN0X3RyYWNlcG9pbnRfanVtcF9w YWQsCi0gIGxpbnV4X2VtaXRfb3BzCisgIGxpbnV4X2VtaXRfb3BzLAorICBs aW51eF9xeGZlcl9saWJyYXJpZXMKIH07CiAKIHN0YXRpYyB2b2lkCkluZGV4 OiBnZGJzZXJ2ZXIvbGludXgtbG93LmgKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9nZGJzZXJ2ZXIvbGludXgt bG93LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDcKZGlmZiAtdSAtcCAt cjEuNDcgbGludXgtbG93LmgKLS0tIGdkYnNlcnZlci9saW51eC1sb3cuaAkx IEphbiAyMDExIDE1OjMzOjI0IC0wMDAwCTEuNDcKKysrIGdkYnNlcnZlci9s aW51eC1sb3cuaAk1IEF1ZyAyMDExIDE3OjU2OjI0IC0wMDAwCkBAIC01Niw2 ICs1Niw5IEBAIHN0cnVjdCBwcm9jZXNzX2luZm9fcHJpdmF0ZQogICAvKiBs aWJ0aHJlYWRfZGItc3BlY2lmaWMgYWRkaXRpb25zLiAgTm90IE5VTEwgaWYg dGhpcyBwcm9jZXNzIGhhcyBsb2FkZWQKICAgICAgdGhyZWFkX2RiLCBhbmQg aXQgaXMgYWN0aXZlLiAgKi8KICAgc3RydWN0IHRocmVhZF9kYiAqdGhyZWFk X2RiOworCisgIC8qICZfcl9kZWJ1Zy4gIC0xIGlmIG5vdCB5ZXQgZGV0ZXJt aW5lZC4gIDAgaWYgbm8gUFRfRFlOQU1JQyBpbiBQaGRycy4gICovCisgIENP UkVfQUREUiByX2RlYnVnOwogfTsKIAogc3RydWN0IGx3cF9pbmZvOwpJbmRl eDogZ2Ric2VydmVyL3NlcnZlci5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ric2VydmVyL3NlcnZlci5j LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0NgpkaWZmIC11IC1wIC1yMS4x NDYgc2VydmVyLmMKLS0tIGdkYnNlcnZlci9zZXJ2ZXIuYwkyMSBKdWwgMjAx MSAyMzo0NjoxMiAtMDAwMAkxLjE0NgorKysgZ2Ric2VydmVyL3NlcnZlci5j CTUgQXVnIDIwMTEgMTc6NTY6MjQgLTAwMDAKQEAgLTkxOCw2ICs5MTgsOSBA QCBoYW5kbGVfcXhmZXJfbGlicmFyaWVzIChjb25zdCBjaGFyICphbm5lCiAg IGlmIChhbm5leFswXSAhPSAnXDAnIHx8ICF0YXJnZXRfcnVubmluZyAoKSkK ICAgICByZXR1cm4gLTE7CiAKKyAgaWYgKHRoZV90YXJnZXQtPnF4ZmVyX2xp YnJhcmllcyAhPSBOVUxMKQorICAgIHJldHVybiB0aGVfdGFyZ2V0LT5xeGZl cl9saWJyYXJpZXMgKGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1Ziwgb2Zmc2V0 LCBsZW4pOworCiAgIC8qIE92ZXItZXN0aW1hdGUgdGhlIG5lY2Vzc2FyeSBt ZW1vcnkuICBBc3N1bWUgdGhhdCBldmVyeSBjaGFyYWN0ZXIKICAgICAgaW4g dGhlIGxpYnJhcnkgbmFtZSBtdXN0IGJlIGVzY2FwZWQuICAqLwogICB0b3Rh bF9sZW4gPSA2NDsKSW5kZXg6IGdkYnNlcnZlci90YXJnZXQuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2dk YnNlcnZlci90YXJnZXQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41NApk aWZmIC11IC1wIC1yMS41NCB0YXJnZXQuaAotLS0gZ2Ric2VydmVyL3Rhcmdl dC5oCTEgSmFuIDIwMTEgMTU6MzM6MjQgLTAwMDAJMS41NAorKysgZ2Ric2Vy dmVyL3RhcmdldC5oCTUgQXVnIDIwMTEgMTc6NTY6MjQgLTAwMDAKQEAgLTM3 Myw2ICszNzMsMTEgQEAgc3RydWN0IHRhcmdldF9vcHMKICAgLyogUmV0dXJu IHRoZSBieXRlY29kZSBvcGVyYXRpb25zIHZlY3RvciBmb3IgdGhlIGN1cnJl bnQgaW5mZXJpb3IuCiAgICAgIFJldHVybnMgTlVMTCBpZiBieXRlY29kZSBj b21waWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiAgKi8KICAgc3RydWN0IGVt aXRfb3BzICooKmVtaXRfb3BzKSAodm9pZCk7CisKKyAgLyogUmVhZCBzb2xp YiBpbmZvLiAgKi8KKyAgaW50ICgqcXhmZXJfbGlicmFyaWVzKSAoY29uc3Qg Y2hhciAqYW5uZXgsIHVuc2lnbmVkIGNoYXIgKnJlYWRidWYsCisJCQkgIHVu c2lnbmVkIGNvbnN0IGNoYXIgKndyaXRlYnVmLAorCQkJICBDT1JFX0FERFIg b2Zmc2V0LCBpbnQgbGVuKTsKIH07CiAKIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0 X29wcyAqdGhlX3RhcmdldDsK --000e0cd35910dd790104a9c60348--