From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3533 invoked by alias); 8 Aug 2011 23:50:40 -0000 Received: (qmail 3525 invoked by uid 22791); 8 Aug 2011 23:50:38 -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; Mon, 08 Aug 2011 23:50:22 +0000 Received: from hpaq13.eem.corp.google.com (hpaq13.eem.corp.google.com [172.25.149.13]) by smtp-out.google.com with ESMTP id p78NoLJw024390 for ; Mon, 8 Aug 2011 16:50:21 -0700 Received: from gyc15 (gyc15.prod.google.com [10.243.49.143]) by hpaq13.eem.corp.google.com with ESMTP id p78Nn4I9030980 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Mon, 8 Aug 2011 16:50:19 -0700 Received: by gyc15 with SMTP id 15so2667746gyc.25 for ; Mon, 08 Aug 2011 16:50:19 -0700 (PDT) Received: by 10.150.235.15 with SMTP id i15mr6821764ybh.31.1312847419359; Mon, 08 Aug 2011 16:50:19 -0700 (PDT) Received: by 10.150.235.15 with SMTP id i15mr6821759ybh.31.1312847419198; Mon, 08 Aug 2011 16:50:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.151.48.15 with HTTP; Mon, 8 Aug 2011 16:49:49 -0700 (PDT) In-Reply-To: <20110808213800.GA21915@host1.jankratochvil.net> References: <20110808210938.GA19337@host1.jankratochvil.net> <20110808213800.GA21915@host1.jankratochvil.net> From: Paul Pluzhnikov Date: Mon, 08 Aug 2011 23:50:00 -0000 Message-ID: Subject: Re: [patch] Implement qXfer:libraries for Linux/gdbserver To: Jan Kratochvil Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd292a610ce4504aa071ca7 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/msg00162.txt.bz2 --000e0cd292a610ce4504aa071ca7 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1796 On Mon, Aug 8, 2011 at 2:38 PM, Jan Kratochvil wrote: > On Mon, 08 Aug 2011 23:30:58 +0200, Paul Pluzhnikov wrote: >> I've updated the other return from get_r_debug() (if no DT_DEBUG >> found) to also return -1. > > I apparently forgot, yes. There were some other missing updates (e.g. comment on linux_refresh_libraries() was now wrong). Updated unified patch re-tested on Linux/x86_64 and i686 and attached. Thanks, -- Paul Pluzhnikov 2011-08-08 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-08 Paul Pluzhnikov Jan Kratochvil * inferiors.c (clear_all_dlls): New function. (clear_inferiors): Move there the code from here, call it here. * 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_refresh_libraries): New function. (struct linux_target_ops): Adjust. (struct process_info_private): New member. (handle_qxfer_libraries): Adjust. (struct target_ops): New member. * server.c (handle_qxfer_libraries): Adjust. * server.h (clear_all_dlls): New prototype. * target.h (struct target_ops): New member. --000e0cd292a610ce4504aa071ca7 Content-Type: text/plain; charset=US-ASCII; name="gdb-solib-list-20110808.txt" Content-Disposition: attachment; filename="gdb-solib-list-20110808.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gr43dlme0 Content-length: 24079 SW5kZXg6IHNvbGliLXN2cjQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3NvbGliLXN2cjQuYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xNTIKZGlmZiAtdSAtcCAtcjEuMTUyIHNvbGli LXN2cjQuYwotLS0gc29saWItc3ZyNC5jCTUgQXVnIDIwMTEgMTU6MTc6MjMg LTAwMDAJMS4xNTIKKysrIHNvbGliLXN2cjQuYwk4IEF1ZyAyMDExIDIzOjM0 OjEwIC0wMDAwCkBAIC0xMDYsNiArMTA2LDIwMSBAQCBzdGF0aWMgY29uc3Qg 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 ZXJzIHRvIHdoYXRldmVyIHNvcnQgb2YKSW5kZXg6IGdkYnNlcnZlci9pbmZl cmlvcnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL2dkYnNlcnZlci9pbmZlcmlvcnMuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4zMApkaWZmIC11IC1wIC1yMS4zMCBpbmZlcmlvcnMu YwotLS0gZ2Ric2VydmVyL2luZmVyaW9ycy5jCTIxIEp1bCAyMDExIDIzOjQ2 OjEyIC0wMDAwCTEuMzAKKysrIGdkYnNlcnZlci9pbmZlcmlvcnMuYwk4IEF1 ZyAyMDExIDIzOjM0OjEwIC0wMDAwCkBAIC0zMTIsMTQgKzMxMiwyMiBAQCB1 bmxvYWRlZF9kbGwgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQURECiAjZGVm aW5lIGNsZWFyX2xpc3QoTElTVCkgXAogICBkbyB7IChMSVNUKS0+aGVhZCA9 IChMSVNUKS0+dGFpbCA9IE5VTEw7IH0gd2hpbGUgKDApCiAKKy8qIENsZWFy IEFMTF9ETExTLiAgKi8KKwogdm9pZAotY2xlYXJfaW5mZXJpb3JzICh2b2lk KQorY2xlYXJfYWxsX2RsbHMgKHZvaWQpCiB7Ci0gIGZvcl9lYWNoX2luZmVy aW9yICgmYWxsX3RocmVhZHMsIGZyZWVfb25lX3RocmVhZCk7CiAgIGZvcl9l YWNoX2luZmVyaW9yICgmYWxsX2RsbHMsIGZyZWVfb25lX2RsbCk7CisgIGNs ZWFyX2xpc3QgKCZhbGxfZGxscyk7Cit9CiAKK3ZvaWQKK2NsZWFyX2luZmVy aW9ycyAodm9pZCkKK3sKKyAgZm9yX2VhY2hfaW5mZXJpb3IgKCZhbGxfdGhy ZWFkcywgZnJlZV9vbmVfdGhyZWFkKTsKICAgY2xlYXJfbGlzdCAoJmFsbF90 aHJlYWRzKTsKLSAgY2xlYXJfbGlzdCAoJmFsbF9kbGxzKTsKKworICBjbGVh cl9hbGxfZGxscyAoKTsKIAogICBjdXJyZW50X2luZmVyaW9yID0gTlVMTDsK IH0KSW5kZXg6IGdkYnNlcnZlci9saW51eC1sb3cuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2dkYnNlcnZl ci9saW51eC1sb3cuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNzMKZGlm ZiAtdSAtcCAtcjEuMTczIGxpbnV4LWxvdy5jCi0tLSBnZGJzZXJ2ZXIvbGlu dXgtbG93LmMJMjEgSnVsIDIwMTEgMjM6NDY6MTIgLTAwMDAJMS4xNzMKKysr IGdkYnNlcnZlci9saW51eC1sb3cuYwk4IEF1ZyAyMDExIDIzOjM0OjEwIC0w MDAwCkBAIC00NzU1LDYgKzQ3NTUsMjg5IEBAIGxpbnV4X2VtaXRfb3BzICh2 b2lkKQogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBFeHRyYWN0ICZwaGRy IGFuZCBudW1fcGhkciBpbiB0aGUgaW5mZXJpb3IuICBSZXR1cm4gMCBvbiBz dWNjZXNzLiAgKi8KKworc3RhdGljIGludAorZ2V0X3BoZHJfcGhudW1fZnJv bV9wcm9jX2F1eHYgKGNvbnN0IGludCBwaWQsIGNvbnN0IGludCBpc19lbGY2 NCwKKwkJCSAgICAgICBDT1JFX0FERFIgKnBoZHJfbWVtYWRkciwgaW50ICpu dW1fcGhkcikKK3sKKyAgY2hhciBmaWxlbmFtZVtQQVRIX01BWF07CisgIGlu dCBmZDsKKyAgY29uc3QgaW50IGF1eHZfc2l6ZSA9IGlzX2VsZjY0CisgICAg PyBzaXplb2YgKEVsZjY0X2F1eHZfdCkgOiBzaXplb2YgKEVsZjMyX2F1eHZf dCk7CisgIGNoYXIgYnVmW3NpemVvZiAoRWxmNjRfYXV4dl90KV07ICAvKiBU aGUgbGFyZ2VyIG9mIHRoZSB0d28uICAqLworCisgIHhzbnByaW50ZiAoZmls ZW5hbWUsIHNpemVvZiBmaWxlbmFtZSwgIi9wcm9jLyVkL2F1eHYiLCBwaWQp OworCisgIGZkID0gb3BlbiAoZmlsZW5hbWUsIE9fUkRPTkxZKTsKKyAgaWYg KGZkIDwgMCkKKyAgICByZXR1cm4gMTsKKworICAqcGhkcl9tZW1hZGRyID0g MDsKKyAgKm51bV9waGRyID0gMDsKKyAgd2hpbGUgKHJlYWQgKGZkLCBidWYs IGF1eHZfc2l6ZSkgPT0gYXV4dl9zaXplCisJICYmICgqcGhkcl9tZW1hZGRy ID09IDAgfHwgKm51bV9waGRyID09IDApKQorICAgIHsKKyAgICAgIGlmIChp c19lbGY2NCkKKwl7CisJICBFbGY2NF9hdXh2X3QgKmNvbnN0IGF1eCA9IChF bGY2NF9hdXh2X3QgKikgYnVmOworCisJICBzd2l0Y2ggKGF1eC0+YV90eXBl KQorCSAgICB7CisJICAgIGNhc2UgQVRfUEhEUjoKKwkgICAgICAqcGhkcl9t ZW1hZGRyID0gYXV4LT5hX3VuLmFfdmFsOworCSAgICAgIGJyZWFrOworCSAg ICBjYXNlIEFUX1BITlVNOgorCSAgICAgICpudW1fcGhkciA9IGF1eC0+YV91 bi5hX3ZhbDsKKwkgICAgICBicmVhazsKKwkgICAgfQorCX0KKyAgICAgIGVs c2UKKwl7CisJICBFbGYzMl9hdXh2X3QgKmNvbnN0IGF1eCA9IChFbGYzMl9h dXh2X3QgKikgYnVmOworCisJICBzd2l0Y2ggKGF1eC0+YV90eXBlKQorCSAg ICB7CisJICAgIGNhc2UgQVRfUEhEUjoKKwkgICAgICAqcGhkcl9tZW1hZGRy ID0gYXV4LT5hX3VuLmFfdmFsOworCSAgICAgIGJyZWFrOworCSAgICBjYXNl IEFUX1BITlVNOgorCSAgICAgICpudW1fcGhkciA9IGF1eC0+YV91bi5hX3Zh bDsKKwkgICAgICBicmVhazsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgY2xv c2UgKGZkKTsKKworICBpZiAoKnBoZHJfbWVtYWRkciA9PSAwIHx8ICpudW1f cGhkciA9PSAwKQorICAgIHsKKyAgICAgIHdhcm5pbmcgKCJVbmV4cGVjdGVk IG1pc3NpbmcgQVRfUEhEUiBhbmQvb3IgQVRfUEhOVU06ICIKKwkgICAgICAg InBoZHJfbWVtYWRkciA9ICVsZCwgcGhkcl9udW0gPSAlZCIsCisJICAgICAg IChsb25nKSAqcGhkcl9tZW1hZGRyLCAqbnVtX3BoZHIpOworICAgICAgcmV0 dXJuIDI7CisgICAgfQorCisgIHJldHVybiAwOworfQorCisvKiBSZXR1cm4g Jl9EWU5BTUlDICh2aWEgUFRfRFlOQU1JQykgaW4gdGhlIGluZmVyaW9yLCBv ciAwIGlmIG5vdCBwcmVzZW50LiAgKi8KKworc3RhdGljIENPUkVfQUREUgor Z2V0X2R5bmFtaWMgKGNvbnN0IGludCBwaWQsIGNvbnN0IGludCBpc19lbGY2 NCkKK3sKKyAgQ09SRV9BRERSIHBoZHJfbWVtYWRkcjsKKyAgaW50IG51bV9w aGRyLCBpOworICB1bnNpZ25lZCBjaGFyICpwaGRyX2J1ZjsKKyAgY29uc3Qg aW50IHBoZHJfc2l6ZSA9IGlzX2VsZjY0ID8gc2l6ZW9mIChFbGY2NF9QaGRy KSA6IHNpemVvZiAoRWxmMzJfUGhkcik7CisKKworICBpZiAoZ2V0X3BoZHJf cGhudW1fZnJvbV9wcm9jX2F1eHYgKHBpZCwgaXNfZWxmNjQsICZwaGRyX21l bWFkZHIsICZudW1fcGhkcikpCisgICAgcmV0dXJuIDA7CisKKyAgZ2RiX2Fz c2VydCAobnVtX3BoZHIgPCAxMDApOyAgLyogQmFzaWMgc2FuaXR5IGNoZWNr LiAgKi8KKyAgcGhkcl9idWYgPSBhbGxvY2EgKG51bV9waGRyICogcGhkcl9z aXplKTsKKworICBpZiAobGludXhfcmVhZF9tZW1vcnkgKHBoZHJfbWVtYWRk ciwgcGhkcl9idWYsIG51bV9waGRyICogcGhkcl9zaXplKSkKKyAgICByZXR1 cm4gMDsKKworICBmb3IgKGkgPSAwOyBpIDwgbnVtX3BoZHI7IGkrKykKKyAg ICB7CisgICAgICBpZiAoaXNfZWxmNjQpCisJeworCSAgRWxmNjRfUGhkciAq Y29uc3QgcCA9IChFbGY2NF9QaGRyICopIChwaGRyX2J1ZiArIGkgKiBwaGRy X3NpemUpOworCisJICBpZiAocC0+cF90eXBlID09IFBUX0RZTkFNSUMpCisJ ICAgIHJldHVybiBwLT5wX3ZhZGRyOworCX0KKyAgICAgIGVsc2UKKwl7CisJ ICBFbGYzMl9QaGRyICpjb25zdCBwID0gKEVsZjMyX1BoZHIgKikgKHBoZHJf YnVmICsgaSAqIHBoZHJfc2l6ZSk7CisKKwkgIGlmIChwLT5wX3R5cGUgPT0g UFRfRFlOQU1JQykKKwkgICAgcmV0dXJuIHAtPnBfdmFkZHI7CisJfQorICAg IH0KKworICByZXR1cm4gMDsKK30KKworLyogUmV0dXJuICZfcl9kZWJ1ZyBp biB0aGUgaW5mZXJpb3IsIG9yIC0xIGlmIG5vdCBwcmVzZW50LiAgUmV0dXJu IHZhbHVlCisgICBjYW4gYmUgMCBpZiB0aGUgaW5mZXJpb3IgZG9lcyBub3Qg eWV0IGhhdmUgdGhlIGxpYnJhcnkgbGlzdCBpbml0aWFsaXplZC4gICovCisK K3N0YXRpYyBDT1JFX0FERFIKK2dldF9yX2RlYnVnIChjb25zdCBpbnQgcGlk LCBjb25zdCBpbnQgaXNfZWxmNjQpCit7CisgIENPUkVfQUREUiBkeW5hbWlj X21lbWFkZHI7CisgIGNvbnN0IGludCBkeW5fc2l6ZSA9IGlzX2VsZjY0ID8g c2l6ZW9mIChFbGY2NF9EeW4pIDogc2l6ZW9mIChFbGYzMl9EeW4pOworICB1 bnNpZ25lZCBjaGFyIGJ1ZltzaXplb2YgKEVsZjY0X0R5bildOyAgLyogVGhl IGxhcmdlciBvZiB0aGUgdHdvLiAgKi8KKworICBkeW5hbWljX21lbWFkZHIg PSBnZXRfZHluYW1pYyAocGlkLCBpc19lbGY2NCk7CisgIGlmIChkeW5hbWlj X21lbWFkZHIgPT0gMCkKKyAgICByZXR1cm4gKENPUkVfQUREUikgLTE7CisK KyAgd2hpbGUgKGxpbnV4X3JlYWRfbWVtb3J5IChkeW5hbWljX21lbWFkZHIs IGJ1ZiwgZHluX3NpemUpID09IDApCisgICAgeworICAgICAgaWYgKGlzX2Vs ZjY0KQorCXsKKwkgIEVsZjY0X0R5biAqY29uc3QgZHluID0gKEVsZjY0X0R5 biAqKSBidWY7CisKKwkgIGlmIChkeW4tPmRfdGFnID09IERUX0RFQlVHKQor CSAgICByZXR1cm4gZHluLT5kX3VuLmRfdmFsOworCisJICBpZiAoZHluLT5k X3RhZyA9PSBEVF9OVUxMKQorCSAgICBicmVhazsKKwl9CisgICAgICBlbHNl CisJeworCSAgRWxmMzJfRHluICpjb25zdCBkeW4gPSAoRWxmMzJfRHluICop IGJ1ZjsKKworCSAgaWYgKGR5bi0+ZF90YWcgPT0gRFRfREVCVUcpCisJICAg IHJldHVybiBkeW4tPmRfdW4uZF92YWw7CisKKwkgIGlmIChkeW4tPmRfdGFn ID09IERUX05VTEwpCisJICAgIGJyZWFrOworCX0KKworICAgICAgZHluYW1p Y19tZW1hZGRyICs9IGR5bl9zaXplOworICAgIH0KKworICByZXR1cm4gKENP UkVfQUREUikgLTE7Cit9CisKKy8qIFJlYWQgb25lIHBvaW50ZXIgZnJvbSBN RU1BRERSIGluIHRoZSBpbmZlcmlvci4gICovCisKK3N0YXRpYyBpbnQKK3Jl YWRfb25lX3B0ciAoQ09SRV9BRERSIG1lbWFkZHIsIENPUkVfQUREUiAqcHRy LCBpbnQgcHRyX3NpemUpCit7CisgICpwdHIgPSAwOworICByZXR1cm4gbGlu dXhfcmVhZF9tZW1vcnkgKG1lbWFkZHIsICh1bnNpZ25lZCBjaGFyICopIHB0 ciwgcHRyX3NpemUpOworfQorCisKK3N0cnVjdCBsaW5rX21hcF9vZmZzZXRz CisgIHsKKyAgICAvKiBPZmZzZXQgYW5kIHNpemUgb2Ygcl9kZWJ1Zy5yX3Zl cnNpb24uICAqLworICAgIGludCByX3ZlcnNpb25fb2Zmc2V0OworCisgICAg LyogT2Zmc2V0IGFuZCBzaXplIG9mIHJfZGVidWcucl9tYXAuICAqLworICAg IGludCByX21hcF9vZmZzZXQ7CisKKyAgICAvKiBPZmZzZXQgdG8gbF9hZGRy IGZpZWxkIGluIHN0cnVjdCBsaW5rX21hcC4gICovCisgICAgaW50IGxfYWRk cl9vZmZzZXQ7CisKKyAgICAvKiBPZmZzZXQgdG8gbF9uYW1lIGZpZWxkIGlu IHN0cnVjdCBsaW5rX21hcC4gICovCisgICAgaW50IGxfbmFtZV9vZmZzZXQ7 CisKKyAgICAvKiBPZmZzZXQgdG8gbF9uZXh0IGZpZWxkIGluIHN0cnVjdCBs aW5rX21hcC4gICovCisgICAgaW50IGxfbmV4dF9vZmZzZXQ7CisKKyAgICAv KiBPZmZzZXQgdG8gbF9wcmV2IGZpZWxkIGluIHN0cnVjdCBsaW5rX21hcC4g ICovCisgICAgaW50IGxfcHJldl9vZmZzZXQ7CisKKyAgfTsKKworLyogQ2xl YXIgYW5kIHJlZnJlc2ggQUxMX0RMTFMgbGlzdC4gICovCisKK3N0YXRpYyB2 b2lkCitsaW51eF9yZWZyZXNoX2xpYnJhcmllcyAodm9pZCkKK3sKKyAgc3Ry dWN0IHByb2Nlc3NfaW5mb19wcml2YXRlICpjb25zdCBwcml2ID0gY3VycmVu dF9wcm9jZXNzICgpLT5wcml2YXRlOworICBjaGFyIGZpbGVuYW1lW1BBVEhf TUFYXTsKKyAgaW50IHBpZCwgaXNfZWxmNjQsIHB0cl9zaXplLCByX3ZlcnNp b247CisgIENPUkVfQUREUiBsbV9hZGRyLCBsbV9wcmV2LCBsX25hbWUsIGxf YWRkciwgbF9uZXh0LCBsX3ByZXY7CisKKyAgc3RhdGljIGNvbnN0IHN0cnVj dCBsaW5rX21hcF9vZmZzZXRzIGxtb18zMmJpdF9vZmZzZXRzID0KKyAgICB7 CisgICAgICAwLCAgICAgLyogcl92ZXJzaW9uIG9mZnNldC4gKi8KKyAgICAg IDQsICAgICAvKiByX2RlYnVnLnJfbWFwIG9mZnNldC4gICovCisgICAgICAw LCAgICAgLyogbF9hZGRyIG9mZnNldCBpbiBsaW5rX21hcC4gICovCisgICAg ICA0LCAgICAgLyogbF9uYW1lIG9mZnNldCBpbiBsaW5rX21hcC4gICovCisg ICAgICAxMiwgICAgLyogbF9uZXh0IG9mZnNldCBpbiBsaW5rX21hcC4gICov CisgICAgICAxNiAgICAgLyogbF9wcmV2IG9mZnNldCBpbiBsaW5rX21hcC4g ICovCisgICAgfTsKKworICBzdGF0aWMgY29uc3Qgc3RydWN0IGxpbmtfbWFw X29mZnNldHMgbG1vXzY0Yml0X29mZnNldHMgPQorICAgIHsKKyAgICAgIDAs ICAgICAvKiByX3ZlcnNpb24gb2Zmc2V0LiAqLworICAgICAgOCwgICAgIC8q IHJfZGVidWcucl9tYXAgb2Zmc2V0LiAgKi8KKyAgICAgIDAsICAgICAvKiBs X2FkZHIgb2Zmc2V0IGluIGxpbmtfbWFwLiAgKi8KKyAgICAgIDgsICAgICAv KiBsX25hbWUgb2Zmc2V0IGluIGxpbmtfbWFwLiAgKi8KKyAgICAgIDI0LCAg ICAvKiBsX25leHQgb2Zmc2V0IGluIGxpbmtfbWFwLiAgKi8KKyAgICAgIDMy ICAgICAvKiBsX3ByZXYgb2Zmc2V0IGluIGxpbmtfbWFwLiAgKi8KKyAgICB9 OworICBjb25zdCBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vOworCisg IHBpZCA9IGx3cGlkX29mIChnZXRfdGhyZWFkX2x3cCAoY3VycmVudF9pbmZl cmlvcikpOworICB4c25wcmludGYgKGZpbGVuYW1lLCBzaXplb2YgZmlsZW5h bWUsICIvcHJvYy8lZC9leGUiLCBwaWQpOworICBpc19lbGY2NCA9IGVsZl82 NF9maWxlX3AgKGZpbGVuYW1lKTsKKyAgbG1vID0gaXNfZWxmNjQgPyAmbG1v XzY0Yml0X29mZnNldHMgOiAmbG1vXzMyYml0X29mZnNldHM7CisgIHB0cl9z aXplID0gaXNfZWxmNjQgPyA4IDogNDsKKworICBpZiAocHJpdi0+cl9kZWJ1 ZyA9PSAwKQorICAgIHByaXYtPnJfZGVidWcgPSBnZXRfcl9kZWJ1ZyAocGlk LCBpc19lbGY2NCk7CisKKyAgaWYgKHByaXYtPnJfZGVidWcgPT0gKENPUkVf QUREUikgLTEgfHwgcHJpdi0+cl9kZWJ1ZyA9PSAwKQorICAgIHJldHVybjsK KworICByX3ZlcnNpb24gPSAwOworICBpZiAobGludXhfcmVhZF9tZW1vcnkg KHByaXYtPnJfZGVidWcgKyBsbW8tPnJfdmVyc2lvbl9vZmZzZXQsCisJCQkg KHVuc2lnbmVkIGNoYXIgKikgJnJfdmVyc2lvbiwKKwkJCSBzaXplb2YgKHJf dmVyc2lvbikpICE9IDAKKyAgICAgIHx8IHJfdmVyc2lvbiAhPSAxKQorICAg IHsKKyAgICAgIHdhcm5pbmcgKCJ1bmV4cGVjdGVkIHJfZGVidWcgdmVyc2lv biAlZCIsIHJfdmVyc2lvbik7CisgICAgICByZXR1cm47CisgICAgfQorCisg IGlmIChyZWFkX29uZV9wdHIgKHByaXYtPnJfZGVidWcgKyBsbW8tPnJfbWFw X29mZnNldCwKKwkJICAgICZsbV9hZGRyLCBwdHJfc2l6ZSkgIT0gMCkKKyAg ICB7CisgICAgICB3YXJuaW5nICgidW5hYmxlIHRvIHJlYWQgcl9tYXAgZnJv bSAweCVseCIsCisJICAgICAgIChsb25nKSBwcml2LT5yX2RlYnVnICsgbG1v LT5yX21hcF9vZmZzZXQpOworICAgICAgcmV0dXJuOworICAgIH0KKworICBj bGVhcl9hbGxfZGxscyAoKTsKKworICBsbV9wcmV2ID0gMDsKKyAgd2hpbGUg KHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9uYW1lX29mZnNldCwK KwkJICAgICAgICZsX25hbWUsIHB0cl9zaXplKSA9PSAwCisJICYmIHJlYWRf b25lX3B0ciAobG1fYWRkciArIGxtby0+bF9hZGRyX29mZnNldCwKKwkJCSAg JmxfYWRkciwgcHRyX3NpemUpID09IDAKKwkgJiYgcmVhZF9vbmVfcHRyIChs bV9hZGRyICsgbG1vLT5sX3ByZXZfb2Zmc2V0LAorCQkJICAmbF9wcmV2LCBw dHJfc2l6ZSkgPT0gMAorCSAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBs bW8tPmxfbmV4dF9vZmZzZXQsCisJCQkgICZsX25leHQsIHB0cl9zaXplKSA9 PSAwKQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGNoYXIgbGlibmFtZVtQQVRI X01BWF07CisKKyAgICAgIGlmIChsbV9wcmV2ICE9IGxfcHJldikKKwl7CisJ ICB3YXJuaW5nICgiY29ycnVwdCBzb2xpYiBjaGFpbjogMHglbHggIT0gMHgl bHgiLAorCQkgICAobG9uZykgbG1fcHJldiwgKGxvbmcpIGxfcHJldik7CisJ ICBicmVhazsKKwl9CisKKyAgICAgIC8qIE5vdCBjaGVja2luZyBmb3IgZXJy b3IgYmVjYXVzZSByZWFkaW5nIG1heSBzdG9wIGJlZm9yZQorCSB3ZSd2ZSBn b3QgUEFUSF9NQVggd29ydGggb2YgY2hhcmFjdGVycy4gICovCisgICAgICBs aWJuYW1lWzBdID0gJ1wwJzsKKyAgICAgIGxpbnV4X3JlYWRfbWVtb3J5IChs X25hbWUsIGxpYm5hbWUsIHNpemVvZiAobGlibmFtZSkpOworICAgICAgaWYg KGxpYm5hbWVbMF0gIT0gJ1wwJykKKwlsb2FkZWRfZGxsICgoY29uc3QgY2hh ciAqKSBsaWJuYW1lLCBsX2FkZHIpOworCisgICAgICBpZiAobF9uZXh0ID09 IDApCisJYnJlYWs7CisKKyAgICAgIGxtX3ByZXYgPSBsbV9hZGRyOworICAg ICAgbG1fYWRkciA9IGxfbmV4dDsKKyAgICB9CisKKyAgLyogVGhlIGxpYnJh cnkgbm90aWZpY2F0aW9uIHJlc3BvbnNlIGlzIG5vdCBleHBlY3RlZCBmb3Ig R05VL0xpbnV4LiAgKi8KKyAgZGxsc19jaGFuZ2VkID0gMDsKK30KKworCiBz dGF0aWMgc3RydWN0IHRhcmdldF9vcHMgbGludXhfdGFyZ2V0X29wcyA9IHsK ICAgbGludXhfY3JlYXRlX2luZmVyaW9yLAogICBsaW51eF9hdHRhY2gsCkBA IC00ODEzLDcgKzUwOTYsOCBAQCBzdGF0aWMgc3RydWN0IHRhcmdldF9vcHMg bGludXhfdGFyZ2V0X29wCiAgIGxpbnV4X2NhbmNlbF9icmVha3BvaW50cywK ICAgbGludXhfc3RhYmlsaXplX3RocmVhZHMsCiAgIGxpbnV4X2luc3RhbGxf ZmFzdF90cmFjZXBvaW50X2p1bXBfcGFkLAotICBsaW51eF9lbWl0X29wcwor ICBsaW51eF9lbWl0X29wcywKKyAgbGludXhfcmVmcmVzaF9saWJyYXJpZXMK IH07CiAKIHN0YXRpYyB2b2lkCkluZGV4OiBnZGJzZXJ2ZXIvbGludXgtbG93 LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmgsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuNDcKZGlmZiAtdSAtcCAtcjEuNDcgbGludXgtbG93LmgKLS0t IGdkYnNlcnZlci9saW51eC1sb3cuaAkxIEphbiAyMDExIDE1OjMzOjI0IC0w MDAwCTEuNDcKKysrIGdkYnNlcnZlci9saW51eC1sb3cuaAk4IEF1ZyAyMDEx IDIzOjM0OjEwIC0wMDAwCkBAIC01Niw2ICs1Niw5IEBAIHN0cnVjdCBwcm9j ZXNzX2luZm9fcHJpdmF0ZQogICAvKiBsaWJ0aHJlYWRfZGItc3BlY2lmaWMg YWRkaXRpb25zLiAgTm90IE5VTEwgaWYgdGhpcyBwcm9jZXNzIGhhcyBsb2Fk ZWQKICAgICAgdGhyZWFkX2RiLCBhbmQgaXQgaXMgYWN0aXZlLiAgKi8KICAg c3RydWN0IHRocmVhZF9kYiAqdGhyZWFkX2RiOworCisgIC8qICZfcl9kZWJ1 Zy4gIC0xIGlmIG5vdCB5ZXQgZGV0ZXJtaW5lZC4gIDAgaWYgbm8gUFRfRFlO QU1JQyBpbiBQaGRycy4gICovCisgIENPUkVfQUREUiByX2RlYnVnOwogfTsK IAogc3RydWN0IGx3cF9pbmZvOwpJbmRleDogZ2Ric2VydmVyL3NlcnZlci5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvZ2Ric2VydmVyL3NlcnZlci5jLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjE0NgpkaWZmIC11IC1wIC1yMS4xNDYgc2VydmVyLmMKLS0tIGdkYnNl cnZlci9zZXJ2ZXIuYwkyMSBKdWwgMjAxMSAyMzo0NjoxMiAtMDAwMAkxLjE0 NgorKysgZ2Ric2VydmVyL3NlcnZlci5jCTggQXVnIDIwMTEgMjM6MzQ6MTAg LTAwMDAKQEAgLTkxOCw2ICs5MTgsOSBAQCBoYW5kbGVfcXhmZXJfbGlicmFy aWVzIChjb25zdCBjaGFyICphbm5lCiAgIGlmIChhbm5leFswXSAhPSAnXDAn IHx8ICF0YXJnZXRfcnVubmluZyAoKSkKICAgICByZXR1cm4gLTE7CiAKKyAg aWYgKHRoZV90YXJnZXQtPnJlZnJlc2hfbGlicmFyaWVzICE9IE5VTEwpCisg ICAgdGhlX3RhcmdldC0+cmVmcmVzaF9saWJyYXJpZXMgKCk7CisKICAgLyog T3Zlci1lc3RpbWF0ZSB0aGUgbmVjZXNzYXJ5IG1lbW9yeS4gIEFzc3VtZSB0 aGF0IGV2ZXJ5IGNoYXJhY3RlcgogICAgICBpbiB0aGUgbGlicmFyeSBuYW1l IG11c3QgYmUgZXNjYXBlZC4gICovCiAgIHRvdGFsX2xlbiA9IDY0OwpJbmRl eDogZ2Ric2VydmVyL3NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ric2VydmVyL3NlcnZlci5o LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjg0CmRpZmYgLXUgLXAgLXIxLjg0 IHNlcnZlci5oCi0tLSBnZGJzZXJ2ZXIvc2VydmVyLmgJMjEgSnVsIDIwMTEg MjM6NDY6MTIgLTAwMDAJMS44NAorKysgZ2Ric2VydmVyL3NlcnZlci5oCTgg QXVnIDIwMTEgMjM6MzQ6MTAgLTAwMDAKQEAgLTI2MCw2ICsyNjAsNyBAQCBw dGlkX3QgdGhyZWFkX2lkX3RvX2dkYl9pZCAocHRpZF90KTsKIHB0aWRfdCB0 aHJlYWRfdG9fZ2RiX2lkIChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CiBwdGlk X3QgZ2RiX2lkX3RvX3RocmVhZF9pZCAocHRpZF90KTsKIHN0cnVjdCB0aHJl YWRfaW5mbyAqZ2RiX2lkX3RvX3RocmVhZCAodW5zaWduZWQgaW50KTsKK3Zv aWQgY2xlYXJfYWxsX2RsbHMgKHZvaWQpOwogdm9pZCBjbGVhcl9pbmZlcmlv cnMgKHZvaWQpOwogc3RydWN0IGluZmVyaW9yX2xpc3RfZW50cnkgKmZpbmRf aW5mZXJpb3IKICAgICAgKHN0cnVjdCBpbmZlcmlvcl9saXN0ICosCkluZGV4 OiBnZGJzZXJ2ZXIvdGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0Lmgs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTQKZGlmZiAtdSAtcCAtcjEuNTQg dGFyZ2V0LmgKLS0tIGdkYnNlcnZlci90YXJnZXQuaAkxIEphbiAyMDExIDE1 OjMzOjI0IC0wMDAwCTEuNTQKKysrIGdkYnNlcnZlci90YXJnZXQuaAk4IEF1 ZyAyMDExIDIzOjM0OjEwIC0wMDAwCkBAIC0zNzMsNiArMzczLDkgQEAgc3Ry dWN0IHRhcmdldF9vcHMKICAgLyogUmV0dXJuIHRoZSBieXRlY29kZSBvcGVy YXRpb25zIHZlY3RvciBmb3IgdGhlIGN1cnJlbnQgaW5mZXJpb3IuCiAgICAg IFJldHVybnMgTlVMTCBpZiBieXRlY29kZSBjb21waWxhdGlvbiBpcyBub3Qg c3VwcG9ydGVkLiAgKi8KICAgc3RydWN0IGVtaXRfb3BzICooKmVtaXRfb3Bz KSAodm9pZCk7CisKKyAgLyogUmVmcmVzaCBBTExfRExMUy4gICovCisgIHZv aWQgKCpyZWZyZXNoX2xpYnJhcmllcykgKHZvaWQpOwogfTsKIAogZXh0ZXJu IHN0cnVjdCB0YXJnZXRfb3BzICp0aGVfdGFyZ2V0Owo= --000e0cd292a610ce4504aa071ca7--