From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10890 invoked by alias); 14 Feb 2013 22:46:58 -0000 Received: (qmail 10877 invoked by uid 22791); 14 Feb 2013 22:46:57 -0000 X-SWARE-Spam-Status: No, hits=-5.4 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD,TW_BJ,TW_HP,TW_XZ X-Spam-Check-By: sourceware.org Received: from mail-ea0-f169.google.com (HELO mail-ea0-f169.google.com) (209.85.215.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 14 Feb 2013 22:46:47 +0000 Received: by mail-ea0-f169.google.com with SMTP id d13so1275241eaa.28 for ; Thu, 14 Feb 2013 14:46:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type:x-gm-message-state; bh=cDuweP+RG7ZzuU+j1SSCS/0CEKhzWJO7fOExFfMJ9Hg=; b=JiRWz/UTDHXlh0E/w6zBpmvAh8Dnfco7gtokiODvakovWOWtj5yjkpRMFlLlKInrrx /3q+smxRGl3awrrcUp2V1pqvPZi+s2sofYgseeem7FVNVVzx2O/afa4tAvFq7i3sjjm/ BFEz41wkgUIg+UASJt4+0L2jGOi28caD7FzsUJLsjXcQ99LVl8ujX0YuUqbQqm/ZeRxS AccBTSQt27LOHA8a7gpiuAvH4mLLB/608zBPomJSq8hALYQTgDtozJI4cKtKVfDELsXb GRabvPSKujS92ABbFTYIDUbD5Z4nxmrbBJVBE+3EsNBvNVqU/HpNa9qnaNAC6zJZkXHb Tswg== MIME-Version: 1.0 X-Received: by 10.14.211.132 with SMTP id w4mr977190eeo.36.1360882005944; Thu, 14 Feb 2013 14:46:45 -0800 (PST) Received: by 10.14.207.195 with HTTP; Thu, 14 Feb 2013 14:46:45 -0800 (PST) In-Reply-To: <20763.64197.459891.627211@ruffy2.mtv.corp.google.com> References: <20753.38272.55066.651097@ruffy2.mtv.corp.google.com> <87txphmdt3.fsf@fleche.redhat.com> <87r4kkks5g.fsf@fleche.redhat.com> <20763.64197.459891.627211@ruffy2.mtv.corp.google.com> Date: Thu, 14 Feb 2013 22:46:00 -0000 Message-ID: Subject: Re: [RFC - Python Scripting] New method gdb.Architecture.disassemble From: Siva Chandra To: Doug Evans Cc: gdb-patches , Tom Tromey , Eli Zaretskii Content-Type: multipart/mixed; boundary=047d7b603b8a8ba9f304d5b7083e X-Gm-Message-State: ALoCoQnkLES/RnvzwSObfdwCm1vYDb3OR7I7ehTrqrU4tUhF4OaM7vsUjSR0AQC+BGrpb7foEBMvqSmN5Sm62q4d1jBrqxCTcuP4/VJiHlTO4eMlgAyq7axowUh/prSJodAQ60a8c6ZzEg+N/I/hbOUAvtpWIQdxS/wpXNL6sVFtdvKxC+pxzZbKWGcaJRcGWKFmLlk2sVMaQ1JQ0Z8QT9OgVIs7FAIOOA== 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: 2013-02/txt/msg00381.txt.bz2 --047d7b603b8a8ba9f304d5b7083e Content-Type: text/plain; charset=ISO-8859-1 Content-length: 3149 I now have a patch (find it attached) which has been tweaked based on comments from Doug. Thanks Doug, for another round of detailed feedback. 2013-02-13 Siva Chandra Reddy Add a new method 'disassemble' to gdb.Architecture class. * python/py-arch.c (archpy_disassmble): Implementation of the new method gdb.Architecture.disassemble. (arch_object_methods): Add entry for the new method. doc/ * gdb.texinfo (Architectures In Python): Add description about the new method gdb.Architecture.disassemble. testsuite/ * gdb.python/py-arch.c: New test case * gdb.python/py-arch.exp: New tests to test gdb.Architecture.disassemble * gdb.python/Makefile.in: Add py-arch to the list of EXECUTABLES. On Wed, Feb 13, 2013 at 12:42 PM, Doug Evans wrote: > Reading beyond high seems counterintuitive, but I can understand why it's easiest if it works that way. I made it that way because I used the way 'disassemble' command works as my guideline for this Python disassemble feature. However, I made Python API to disassemble instructions which have a start address in [start, end], while the disassemble command does the same in [start, end). > Also, I can imagine a user wanting to specify a count instead of high. > How about supporting both "high" and "count", with the default being high is unspecified and count=1? I have now added a count argument. > Including the function name and offset in the output feels wrong. > It's trying to make the API call do too much. Removed in the attached patch. As I have mentioned above, I used the 'functionality' of the 'disassemble' command as a guide. Hence, I had put in whatever it has. For my needs, all I want are 'addr' and 'asm', and the rest were only good to have. > Plus, the documentation needs to specify what "flavor" is used (e.g. intel vs att). > I'd just add a line of texzt saying the flavor (or choose a better word) is the one specified by the CLI variable disassembly-flavor, > and leave for another day adding an input parameter to specify the flavor. Added a note to the docs. I am not very sure if we should (in future) add the 'flavor' as an argument to the disassemble method. I prefer if it were a global function in the 'gdb' module. Again, this is my opinion as I personally do not see why one would want to have assembly code from different architectures in different flavors. > Why call build_address_symbol here? > To me it's trying to make this API call do too much. Removed now. > btw, what about filename,line isn't useful? It is not that they are not useful, but that build_address_symbol does not return useful values. I have verified this with experiments but have not digged into the code to figure out why. There is a similar not in disasm.c:dump_insns. > So I can imagine 3 API routines here: > - disassemble (pc) > - get_function_and_offset (pc) [or some such] > - get_file_and_line (pc) [assuming gdbpy_find_pc_line doesn't always do what one wants] I agree. I will add the last two to my TODO list. Thanks, Siva Chandra --047d7b603b8a8ba9f304d5b7083e Content-Type: text/plain; charset=US-ASCII; name="arch_disassemble_patch_v6.txt" Content-Disposition: attachment; filename="arch_disassemble_patch_v6.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hd6hst5i0 Content-length: 14421 ZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dk Yi50ZXhpbmZvCmluZGV4IGUzZjMzNmUuLmNiYjY0YzQgMTAwNjQ0Ci0tLSBh L2dkYi9kb2MvZ2RiLnRleGluZm8KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwpAQCAtMjYwNDAsNiArMjYwNDAsMzggQEAgQSBAY29kZXtnZGIuQXJjaGl0 ZWN0dXJlfSBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogUmV0 dXJuIHRoZSBuYW1lIChzdHJpbmcgdmFsdWUpIG9mIHRoZSBhcmNoaXRlY3R1 cmUuCiBAZW5kIGRlZnVuCiAKK0BkZWZ1biBBcmNoaXRlY3R1cmUuZGlzYXNz ZW1ibGUgKEB2YXJ7c3RhcnRfcGN9IEBye1t9LCBAdmFye2VuZF9wY30gQHJ7 W30sIEB2YXJ7Y291bnR9QHJ7XV19KQorUmV0dXJuIGEgbGlzdCBvZiB1dG1v c3QgQHZhcntjb3VudH0gbnVtYmVyIG9mIGRpc2Fzc2VtYmxlZCBpbnN0cnVj dGlvbnMKK3dob3NlIHN0YXJ0IGFkZHJlc3MgZmFsbHMgaW4gdGhlIGNsb3Nl ZCBtZW1vcnkgYWRkcmVzcyBpbnRlcnZhbCBmcm9tCitAdmFye3N0YXJ0X3Bj fSB0byBAdmFye2VuZF9wY30uICBJZiBAdmFye2VuZF9wY30gaXMgbm90IHNw ZWNpZmllZCwgYnV0CitAdmFye2NvdW50fSBpcyBzcGVjaWZpZWQsIHRoZW4g QHZhcntjb3VudH0gbnVtYmVyIG9mIGluc3RydWN0aW9ucworc3RhcnRpbmcg ZnJvbSB0aGUgYWRkcmVzcyBAdmFye3N0YXJ0X3BjfSBhcmUgcmV0dXJuZWQu ICBJZiBAdmFye2NvdW50fQoraXMgbm90IHNwZWNpZmllZCBidXQgQHZhcntl bmRfcGN9IGlzIHNwZWNpZmllZCwgdGhlbiBhbGwgaW5zdHJ1Y3Rpb25zCit3 aG9zZSBzdGFydCBhZGRyZXNzIGZhbGxzIGluIHRoZSBjbG9zZWQgbWVtb3J5 IGFkZHJlc3MgaW50ZXJ2YWwgZnJvbQorQHZhcntzdGFydF9wY30gdG8gQHZh cntlbmRfcGN9IGFyZSByZXR1cm5lZC4gIElmIG5laXRoZXIgQHZhcntlbmRf cGN9Citub3IgQHZhcntjb3VudH0gYXJlIHNwZWNpZmllZCwgdGhlbiBhIHNp bmdsZSBpbnN0cnVjdGlvbiBhdAorQHZhcntzdGFydF9wY30gaXMgcmV0dXJu ZWQuICBGb3IgYWxsIG9mIHRoZXNlIGNhc2VzLCB0aGUgZWxlbWVudHMgb2Yg dGhlCityZXR1cm5lZCBsaXN0IGFyZSBhIFB5dGhvbiBAY29kZXtkaWN0fSB3 aXRoIHRoZSBmb2xsb3dpbmcgc3RyaW5nIGtleXM6CisKK0B0YWJsZSBAY29k ZQorCitAaXRlbSBhZGRyCitUaGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0 aGlzIGtleSBpcyBhIFB5dGhvbiBsb25nIGludGVnZXIgY2FwdHVyaW5nCit0 aGUgbWVtb3J5IGFkZHJlc3Mgb2YgdGhlIGluc3RydWN0aW9uLgorCitAaXRl bSBhc20KK1RoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoaXMga2V5IGlz IGEgc3RyaW5nIHZhbHVlIHdoaWNoIHJlcHJlc2VudHMKK3RoZSBpbnN0cnVj dGlvbiB3aXRoIGFzc2VtYmx5IGxhbmd1YWdlIG1uZW1vbmljcy4gIFRoZSBh c3NlbWJseQorbGFuZ3VhZ2UgZmxhdm9yIHVzZWQgaXMgdGhlIHNhbWUgYXMg dGhhdCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgQ0xJCit2YXJpYWJsZSBA Y29kZXtkaXNhc3NlbWJseS1mbGF2b3J9LiAgQHhyZWZ7TWFjaGluZSBDb2Rl fS4KKworQGl0ZW0gbGVuZ3RoCitUaGUgdmFsdWUgY29ycmVzcG9kaW5nIHRv IHRoaXMga2V5IGlzIHRoZSBsZW5ndGggKGludGVnZXIgdmFsdWUpIG9mIHRo ZQoraW5zdHJ1Y3Rpb24gaW4gYnl0ZXMuCisKK0BlbmQgdGFibGUKK0BlbmQg ZGVmdW4KKwogQG5vZGUgUHl0aG9uIEF1dG8tbG9hZGluZwogQHN1YnNlY3Rp b24gUHl0aG9uIEF1dG8tbG9hZGluZwogQGNpbmRleCBQeXRob24gYXV0by1s b2FkaW5nCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWFyY2guYyBiL2dk Yi9weXRob24vcHktYXJjaC5jCmluZGV4IGVkZDUwOGYuLjdmM2U4NWMgMTAw NjQ0Ci0tLSBhL2dkYi9weXRob24vcHktYXJjaC5jCisrKyBiL2dkYi9weXRo b24vcHktYXJjaC5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiZGVm cy5oIgogI2luY2x1ZGUgImdkYmFyY2guaCIKICNpbmNsdWRlICJhcmNoLXV0 aWxzLmgiCisjaW5jbHVkZSAiZGlzYXNtLmgiCiAjaW5jbHVkZSAicHl0aG9u LWludGVybmFsLmgiCiAKIHR5cGVkZWYgc3RydWN0IGFyY2hfb2JqZWN0X3R5 cGVfb2JqZWN0IHsKQEAgLTg2LDYgKzg3LDEzMSBAQCBhcmNocHlfbmFtZSAo UHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogICByZXR1cm4gcHlf bmFtZTsKIH0KIAorLyogSW1wbGVtZW50YXRpb24gb2YKKyAgIGdkYi5BcmNo aXRlY3R1cmUuZGlzYXNzZW1ibGUgKHNlbGYsIHN0YXJ0X3BjIFssIGVuZF9w YyBbLGNvdW50XV0pIC0+IExpc3QuCisgICBSZXR1cm5zIGEgbGlzdCBvZiBp bnN0cnVjdGlvbnMgaW4gYSBtZW1vcnkgYWRkcmVzcyByYW5nZS4gIEVhY2gg aW5zdHJ1Y3Rpb24KKyAgIGluIHRoZSBsaXN0IGlzIGEgUHl0aG9uIGRpY3Qg b2JqZWN0LgorKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FyY2hweV9kaXNh c3NlbWJsZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9i amVjdCAqa3cpCit7CisgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyAi c3RhcnRfcGMiLCAiZW5kX3BjIiwgImNvdW50IiwgTlVMTCB9OworICBDT1JF X0FERFIgc3RhcnQsIGVuZCA9IDA7CisgIENPUkVfQUREUiBwYzsKKyAgbG9u ZyBjb3VudCA9IDAsIGkgPSAxOworICBQeU9iamVjdCAqcmVzdWx0X2xpc3Qs ICplbmRfb2JqID0gTlVMTCwgKmNvdW50X29iaiA9IE5VTEw7CisgIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoID0gYXJjaF9vYmplY3RfdG9fZ2RiYXJjaCAo c2VsZik7CisKKyAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMg KGFyZ3MsIGt3LCBHREJfUFlfTExVX0FSRyAifE9PIiwga2V5d29yZHMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZl bmRfb2JqLCAmY291bnRfb2JqKSkKKyAgICByZXR1cm4gTlVMTDsKKworICBp ZiAoZW5kX29iaikKKyAgICB7CisgICAgICBpZiAoUHlPYmplY3RfVHlwZUNo ZWNrIChlbmRfb2JqLCAmUHlJbnRfVHlwZSkpCisgICAgICAgIC8qIElmIHRo ZSBlbmRfcGMgdmFsdWUgaXMgc3BlY2lmaWVkIHdpdGhvdXQgYSB0cmFpbGlu ZyAnTCcsIGVuZF9vYmogd2lsbAorICAgICAgICAgICBhbiBpbnRlZ2VyIGFu ZCBub3QgYSBsb25nIGludGVnZXIuICAqLworICAgICAgICBlbmQgPSBQeUlu dF9Bc0xvbmcgKGVuZF9vYmopOworICAgICAgZWxzZSBpZiAoUHlPYmplY3Rf VHlwZUNoZWNrIChlbmRfb2JqLCAmUHlMb25nX1R5cGUpKQorICAgICAgICBl bmQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nIChlbmRfb2JqKTsKKyAg ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIFB5X0RFQ1JFRiAoZW5k X29iaik7CisgICAgICAgICAgUHlfWERFQ1JFRiAoY291bnRfb2JqKTsKKyAg ICAgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1R5cGVFcnJvciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkFyZ3VtZW50ICdlbmRfcGMn IHNob3VsZCBiZSBhIChsb25nKSBpbnRlZ2VyLiIpKTsKKworICAgICAgICAg IHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICBpZiAoY291bnRf b2JqKQorICAgIHsKKyAgICAgIGNvdW50ID0gUHlJbnRfQXNMb25nIChjb3Vu dF9vYmopOworICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpKQorICAgICAg ICB7CisgICAgICAgICAgUHlfREVDUkVGIChjb3VudF9vYmopOworICAgICAg ICAgIFB5X1hERUNSRUYgKGVuZF9vYmopOworICAgICAgICAgIFB5RXJyX1Nl dFN0cmluZyAoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgXygiQXJndW1lbnQgJ2NvdW50JyBzaG91bGQgYmUgYW4gaW50 ZWdlci4iKSk7CisKKyAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAg fQorICAgIH0KKworICByZXN1bHRfbGlzdCA9IFB5TGlzdF9OZXcgKDApOwor ICBpZiAocmVzdWx0X2xpc3QgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsK KworICBmb3IgKHBjID0gc3RhcnQ7CisgICAgICAgLyogQWxsIGFyZ3MgYXJl IHNwZWNpZmllZC4gICovCisgICAgICAgKGVuZF9vYmogJiYgY291bnRfb2Jq ICYmIHBjIDw9IGVuZCAmJiBpIDw9IGNvdW50KQorICAgICAgIC8qIGVuZF9w YyBpcyBzcGVjaWZpZWQsIGJ1dCBubyBjb3VudC4gICovCisgICAgICAgfHwg KGVuZF9vYmogJiYgY291bnRfb2JqID09IE5VTEwgJiYgcGMgPD0gZW5kKQor ICAgICAgIC8qIGVuZF9wYyBpcyBub3Qgc3BlY2lmaWVkLCBidXQgYSBjb3Vu dCBpcy4gICovCisgICAgICAgfHwgKGVuZF9vYmogPT0gTlVMTCAmJiBjb3Vu dF9vYmogJiYgaSA8PSBjb3VudCkKKyAgICAgICAvKiBCb3RoIGVuZF9wYyBh bmQgY291bnQgYXJlIG5vdCBzcGVjaWZpZWQuICAqLworICAgICAgIHx8IChl bmRfb2JqID09IE5VTEwgJiYgY291bnRfb2JqID09IE5VTEwgJiYgcGMgPD0g c3RhcnQpOykKKyAgICB7CisgICAgICBpbnQgaW5zbl9sZW4gPSAwOworICAg ICAgY2hhciAqYXMgPSBOVUxMOworICAgICAgc3RydWN0IHVpX2ZpbGUgKm1l bWZpbGUgPSBtZW1fZmlsZW9wZW4gKCk7CisgICAgICBQeU9iamVjdCAqaW5z bl9kaWN0ID0gUHlEaWN0X05ldyAoKTsKKyAgICAgIHZvbGF0aWxlIHN0cnVj dCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKKworICAgICAgaWYgKGluc25fZGlj dCA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgUHlfREVDUkVGIChy ZXN1bHRfbGlzdCk7CisgICAgICAgICAgdWlfZmlsZV9kZWxldGUgKG1lbWZp bGUpOworCisgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAg ICAgIGlmIChQeUxpc3RfQXBwZW5kIChyZXN1bHRfbGlzdCwgaW5zbl9kaWN0 KSkKKyAgICAgICAgeworICAgICAgICAgIFB5X0RFQ1JFRiAocmVzdWx0X2xp c3QpOworICAgICAgICAgIFB5X0RFQ1JFRiAoaW5zbl9kaWN0KTsKKyAgICAg ICAgICB1aV9maWxlX2RlbGV0ZSAobWVtZmlsZSk7CisKKyAgICAgICAgICBy ZXR1cm4gTlVMTDsgIC8qIFB5TGlzdF9BcHBlbmQgU2V0cyB0aGUgZXhjZXB0 aW9uLiAgKi8KKyAgICAgICAgfQorCisgICAgICBUUllfQ0FUQ0ggKGV4Y2Vw dCwgUkVUVVJOX01BU0tfQUxMKQorICAgICAgICB7CisgICAgICAgICAgaW5z bl9sZW4gPSBnZGJfcHJpbnRfaW5zbiAoZ2RiYXJjaCwgcGMsIG1lbWZpbGUs IE5VTEwpOworICAgICAgICB9CisgICAgICBpZiAoZXhjZXB0LnJlYXNvbiA8 IDApCisgICAgICAgIHsKKyAgICAgICAgICBQeV9ERUNSRUYgKHJlc3VsdF9s aXN0KTsKKyAgICAgICAgICB1aV9maWxlX2RlbGV0ZSAobWVtZmlsZSk7CisK KyAgICAgICAgICByZXR1cm4gZ2RicHlfY29udmVydF9leGNlcHRpb24gKGV4 Y2VwdCk7CisgICAgICAgIH0KKworICAgICAgYXMgPSB1aV9maWxlX3hzdHJk dXAgKG1lbWZpbGUsIE5VTEwpOworICAgICAgaWYgKFB5RGljdF9TZXRJdGVt U3RyaW5nIChpbnNuX2RpY3QsICJhZGRyIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiX3B5X2xvbmdfZnJvbV91bG9uZ2VzdCAocGMp KQorICAgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nIChpbnNuX2Rp Y3QsICJhc20iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQeVN0cmluZ19Gcm9tU3RyaW5nIChhcyA/IGFzIDogIjx1bmtub3duPiIp KQorICAgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nIChpbnNuX2Rp Y3QsICJsZW5ndGgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQeUludF9Gcm9tTG9uZyAoaW5zbl9sZW4pKSkKKyAgICAgICAgewor ICAgICAgICAgIFB5X0RFQ1JFRiAocmVzdWx0X2xpc3QpOworCisgICAgICAg ICAgdWlfZmlsZV9kZWxldGUgKG1lbWZpbGUpOworICAgICAgICAgIHhmcmVl IChhcyk7CisKKyAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQor CisgICAgICBwYyArPSBpbnNuX2xlbjsKKyAgICAgIGkrKzsKKyAgICAgIHVp X2ZpbGVfZGVsZXRlIChtZW1maWxlKTsKKyAgICAgIHhmcmVlIChhcyk7Cisg ICAgfQorCisgIHJldHVybiByZXN1bHRfbGlzdDsKK30KKwogLyogSW5pdGlh bGl6ZXMgdGhlIEFyY2hpdGVjdHVyZSBjbGFzcyBpbiB0aGUgZ2RiIG1vZHVs ZS4gICovCiAKIHZvaWQKQEAgLTEwNSw2ICsyMzEsMTAgQEAgc3RhdGljIFB5 TWV0aG9kRGVmIGFyY2hfb2JqZWN0X21ldGhvZHMgW10gPSB7CiAgIHsgIm5h bWUiLCBhcmNocHlfbmFtZSwgTUVUSF9OT0FSR1MsCiAgICAgIm5hbWUgKCkg LT4gU3RyaW5nLlxuXAogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBhcmNoaXRl Y3R1cmUgYXMgYSBzdHJpbmcgdmFsdWUuIiB9LAorICB7ICJkaXNhc3NlbWJs ZSIsIChQeUNGdW5jdGlvbikgYXJjaHB5X2Rpc2Fzc2VtYmxlLAorICAgIE1F VEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgImRpc2Fzc2VtYmxl IChsb3csIGhpZ2gpIC0+IExpc3QuXG5cCitSZXR1cm4gdGhlIGxpc3Qgb2Yg ZGlzYXNzZW1ibGVkIGluc3RydWN0aW9ucyBmcm9tIExPVyB0byBISUdILiIg fSwKICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCmluZGV4IDRlMjg2 YjUuLjBiODE1MDcgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9NYWtlZmlsZS5pbgorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vTWFrZWZpbGUuaW4KQEAgLTYsNyArNiw3IEBAIEVYRUNVVEFCTEVTID0g cHktdHlwZSBweS12YWx1ZSBweS1wcmV0dHlwcmludCBweS10ZW1wbGF0ZSBw eS1ibG9jayBcCiAJcHktc2hhcmVkIHB5dGhvbiBsaWItdHlwZXMgcHktZXZl bnRzIHB5LWV2dGhyZWFkcyBweS1mcmFtZSBcCiAJcHktbWkgcHktcHAtbWFp bnQgcHktcHJvZ3NwYWNlIHB5LXNlY3Rpb24tc2NyaXB0IHB5LW9iamZpbGUg XAogCXB5LWZpbmlzaC1icmVha3BvaW50IHB5LWZpbmlzaC1icmVha3BvaW50 MiBweS12YWx1ZS1jYyBweS1leHBsb3JlIFwKLQlweS1leHBsb3JlLWNjCisJ cHktZXhwbG9yZS1jYyBweS1hcmNoCiAKIE1JU0NFTExBTkVPVVMgPSBweS1z aGFyZWQtc2wuc2wgcHktZXZlbnRzLXNobGliLnNvIHB5LWV2ZW50cy1zaGxp Yi1ub2RlYnVnLnNvIAogCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktYXJjaC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWFyY2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5lMmZlNTVjCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LWFyY2guYwpAQCAtMCwwICsxLDIzIEBACisvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgor CisgICBDb3B5cmlnaHQgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyovCisKK2ludAor bWFpbiAodm9pZCkKK3sKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktYXJjaC5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktYXJjaC5leHAKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNGU3MzZiOAotLS0gL2Rldi9udWxsCisr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1hcmNoLmV4cApAQCAt MCwwICsxLDU0IEBACisjIENvcHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitzdGFuZGFy ZF90ZXN0ZmlsZQorCitpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVz dGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9XSB9IHsKKyAgICBy ZXR1cm4gLTEKK30KKworIyBTa2lwIGFsbCB0ZXN0cyBpZiBQeXRob24gc2Ny aXB0aW5nIGlzIG5vdCBlbmFibGVkLgoraWYgeyBbc2tpcF9weXRob25fdGVz dHNdIH0geyBjb250aW51ZSB9CisKK2lmICFbcnVudG9fbWFpbl0geworICAg cmV0dXJuIC0xCit9CisKK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhv biBmcmFtZSA9IGdkYi5zZWxlY3RlZF9mcmFtZSgpIiAiZ2V0IGZyYW1lIiAw CitnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gYXJjaCA9IGZyYW1l LmFyY2hpdGVjdHVyZSgpIiAiZ2V0IGFyY2giIDAKK2dkYl9weV90ZXN0X3Np bGVudF9jbWQgInB5dGhvbiBwYyA9IGZyYW1lLnBjKCkiICJnZXQgcGMiIDAK K2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBpbnNuX2xpc3QxID0g YXJjaC5kaXNhc3NlbWJsZShwYywgcGMsIDEpIiBcCisgICJkaXNhc3NlbWJs ZSIgMAorZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGluc25fbGlz dDIgPSBhcmNoLmRpc2Fzc2VtYmxlKHBjLCBwYykiIFwKKyAgImRpc2Fzc2Vt YmxlIG5vIGNvdW50IiAwCitnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRo b24gaW5zbl9saXN0MyA9IGFyY2guZGlzYXNzZW1ibGUocGMsIGNvdW50PTEp IiBcCisgICJkaXNhc3NlbWJsZSBubyBlbmQiIDAKK2dkYl9weV90ZXN0X3Np bGVudF9jbWQgInB5dGhvbiBpbnNuX2xpc3Q0ID0gYXJjaC5kaXNhc3NlbWJs ZShwYykiIFwKKyAgImRpc2Fzc2VtYmxlIG5vIGVuZCBubyBjb3VudCIgMAor CitnZGJfdGVzdCAicHl0aG9uIHByaW50IGxlbihpbnNuX2xpc3QxKSIgIjEi ICJ0ZXN0IG51bWJlciBvZiBpbnN0cnVjdGlvbnMgMSIKK2dkYl90ZXN0ICJw eXRob24gcHJpbnQgbGVuKGluc25fbGlzdDIpIiAiMSIgInRlc3QgbnVtYmVy IG9mIGluc3RydWN0aW9ucyAyIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBs ZW4oaW5zbl9saXN0MykiICIxIiAidGVzdCBudW1iZXIgb2YgaW5zdHJ1Y3Rp b25zIDMiCitnZGJfdGVzdCAicHl0aG9uIHByaW50IGxlbihpbnNuX2xpc3Q0 KSIgIjEiICJ0ZXN0IG51bWJlciBvZiBpbnN0cnVjdGlvbnMgNCIKKworZ2Ri X3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGluc24gPSBpbnNuX2xpc3Qx XFswXF0iICJnZXQgaW5zdHJ1Y3Rpb24iIDAKKworZ2RiX3Rlc3QgInB5dGhv biBwcmludCBcImFkZHJcIiBpbiBpbnNuIiAiVHJ1ZSIgInRlc3Qga2V5IGFk ZHIiCitnZGJfdGVzdCAicHl0aG9uIHByaW50IFwiYXNtXCIgaW4gaW5zbiIg IlRydWUiICJ0ZXN0IGtleSBhc20iCitnZGJfdGVzdCAicHl0aG9uIHByaW50 IFwibGVuZ3RoXCIgaW4gaW5zbiIgIlRydWUiICJ0ZXN0IGtleSBsZW5ndGgi CisKKyMgTmVnYXRpdmUgdGVzdAorZ2RiX3Rlc3QgInB5dGhvbiBhcmNoLmRp c2Fzc2VtYmxlKDAsIDApIiAiLipnZGJcLk1lbW9yeUVycm9yLioiIFwKKyAg InRlc3QgZXhjZXB0aW9uIgo= --047d7b603b8a8ba9f304d5b7083e--