From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29679 invoked by alias); 13 Feb 2013 14:37:55 -0000 Received: (qmail 29669 invoked by uid 22791); 13 Feb 2013 14:37:54 -0000 X-SWARE-Spam-Status: No, hits=-5.2 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 X-Spam-Check-By: sourceware.org Received: from mail-ee0-f49.google.com (HELO mail-ee0-f49.google.com) (74.125.83.49) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 13 Feb 2013 14:37:48 +0000 Received: by mail-ee0-f49.google.com with SMTP id d4so654447eek.22 for ; Wed, 13 Feb 2013 06:37: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=uSMXFWv+LGPu0lTlVhvBEePnHxmikH3IsRgugf2DgCg=; b=WIJtv2B3hA02Ycod695FjaHITWn/zMgc9t/7ZKvQJRztpPrDJLApYLga5SonfNgFzV orRk+DtWHRMq6mFLQH870szBqk7FT0wt4t1pu4yzebp13U6Rye+S5aENFqscJV10NbCv +lC8ldcpYkW48ACNd+YGhQjfSDvulBI1DqHjFrpu1ABHxukqiev8bZ87bgNFEzsnn5fV winzMtT5A+V23+veiOxocSfhDlJhXPkpV8L4Nq7g9CG5d2nrmlxjopBgdDZ2Re4za3dw Kg49T75EHSjSDOLUc250pdRCbujoBD+YQ6VEaPOrChPshKT8f4JbmH8VvfEjAwAXlHOi lzpQ== MIME-Version: 1.0 X-Received: by 10.14.184.68 with SMTP id r44mr6439945eem.40.1360766266258; Wed, 13 Feb 2013 06:37:46 -0800 (PST) Received: by 10.14.207.195 with HTTP; Wed, 13 Feb 2013 06:37:46 -0800 (PST) In-Reply-To: <87txphmdt3.fsf@fleche.redhat.com> References: <20753.38272.55066.651097@ruffy2.mtv.corp.google.com> <87txphmdt3.fsf@fleche.redhat.com> Date: Wed, 13 Feb 2013 14:37:00 -0000 Message-ID: Subject: Re: [RFC - Python Scripting] New method gdb.Architecture.disassemble From: Siva Chandra To: Tom Tromey Cc: Doug Evans , gdb-patches Content-Type: multipart/mixed; boundary=047d7b3438ecec340b04d59c15d6 X-Gm-Message-State: ALoCoQkQbqY217Z6s9QJ1L7FYhOE2+f1rO3aEykoA+kbZNsYlZlIxcZvqyLU0jD91CPNEz1Wa/3Y2UzXOux+BbdmIZ6Dyy6RKHEODw/7G0CD6fnOxUbhOJsjSsTckBHNDtH2jV7BhejOZhA56HKTSYvAIH5XUJhfU1+NApH59qJVlbWsm2nWxbL3Dvl2m1mn0q/bwq6LeCUhPlt6mrmLcYNaGsNnFUcuHQ== 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/msg00303.txt.bz2 --047d7b3438ecec340b04d59c15d6 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1581 I have addressed all of Tom's comments and added docs and tests in the attached patch. I did not add a NEWS entry as an entry already exists for the new gdb.Architecture class. 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. I have a couple of questions for my knowledge: 1. docs.python.org says that PyList_Append sets an exception when it fails. It does not say so for PyList_New() and PyDict_New(). However, Tom commented that even these functions set exception on failure. In general, how do we know if a certain Python C API function sets an exception or not? 2. One of Tom's suggestion was to use something like this: asm_code == NULL ? unknown_str : asm_code I have modified my code accordingly, but the concern I have is that asm_code is of type 'char *', while unknown_str if of type 'const char *'. This means that the type of result of the above expression is dynamic! Though the code compiles with GCC, it that standard? Thanks, Siva Chandra --047d7b3438ecec340b04d59c15d6 Content-Type: text/plain; charset=US-ASCII; name="arch_disassemble_patch_v4.txt" Content-Disposition: attachment; filename="arch_disassemble_patch_v4.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hd4l2k8z0 Content-length: 12314 ZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dk Yi50ZXhpbmZvCmluZGV4IGUzZjMzNmUuLmIxOGM0MDkgMTAwNjQ0Ci0tLSBh L2dkYi9kb2MvZ2RiLnRleGluZm8KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwpAQCAtMjYwNDAsNiArMjYwNDAsMzYgQEAgQSBAY29kZXtnZGIuQXJjaGl0 ZWN0dXJlfSBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogUmV0 dXJuIHRoZSBuYW1lIChzdHJpbmcgdmFsdWUpIG9mIHRoZSBhcmNoaXRlY3R1 cmUuCiBAZW5kIGRlZnVuCiAKK0BkZWZ1biBBcmNoaXRlY3R1cmUuZGlzYXNz ZW1ibGUgKEB2YXJ7bG93fSwgQHZhcntoaWdofSkKK1JldHVybiBhIGxpc3Qg b2YgZGlzYXNzZW1ibGVkIGluc3RydWN0aW9ucyBpbiB0aGUgbWVtb3J5IGFk ZHJlc3MgcmFuZ2UKK0B2YXJ7bG93fSB0byBAdmFye2hpZ2h9LiAgRWFjaCBl bGVtZW50IG9mIHRoZSBsaXN0IGlzIGEgUHl0aG9uCitAY29kZXtkaWN0fSB3 aXRoIHRoZSBmb2xsb3dpbmcgc3RyaW5nIGtleXM6CisKK0B0YWJsZSBAYXNp cworCitAaXRlbSBAY29kZXtgYWRkcid9CitUaGUgdmFsdWUgY29ycmVzcG9u ZGluZyB0byB0aGlzIGtleSBpcyBhIFB5dGhvbiBsb25nIGludGVnZXIgY2Fw dHVyaW5nCit0aGUgbWVtb3J5IGFkZHJlc3Mgb2YgdGhlIGluc3RydWN0aW9u LgorCitAaXRlbSBAY29kZXtgYXNtJ30KK1RoZSB2YWx1ZSBjb3JyZXNwb25k aW5nIHRvIHRoaXMga2V5IGlzIGEgc3RyaW5nIHZhbHVlIGNhcHR1cmluZyB0 aGUKK2Fzc2VtYmx5IGxhbmd1YWdlIGNvZGUgb2YgdGhlIGluc3RydWN0aW9u LgorCitAaXRlbSBAY29kZXtgZnVuYyd9CitUaGUgdmFsdWUgY29ycmVzcG9u ZGluZyB0byB0aGlzIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24g KHN0cmluZwordmFsdWUpIHRoZSBpbnN0cnVjdGlvbiBiZWxvbmdzIHRvLgor CitAaXRlbSBAY29kZXtgbGVuZ3RoJ30KK1RoZSB2YWx1ZSBjb3JyZXNwb2Rp bmcgdG8gdGhpcyBrZXkgaXMgdGhlIGxlbmd0aCAoaW50ZWdlciB2YWx1ZSkg b2YgdGhlCitpbnN0cnVjdGlvbiBpbiBieXRlcy4KKworQGl0ZW0gQGNvZGV7 YG9mZnNldCd9CitUaGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGlzIGtl eSBpcyB0aGUgYnl0ZSBvZmZzZXQgKGludGVnZXIgdmFsdWUpCitvZiB0aGUg aW5zdHJ1Y3Rpb24gd2l0aGluIHRoZSBmdW5jdGlvbiBpdCBiZWxvbmdzIHRv LgorCitAZW5kIHRhYmxlCitAZW5kIGRlZnVuCisKIEBub2RlIFB5dGhvbiBB dXRvLWxvYWRpbmcKIEBzdWJzZWN0aW9uIFB5dGhvbiBBdXRvLWxvYWRpbmcK IEBjaW5kZXggUHl0aG9uIGF1dG8tbG9hZGluZwpkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9weS1hcmNoLmMgYi9nZGIvcHl0aG9uL3B5LWFyY2guYwppbmRl eCBlZGQ1MDhmLi4xODM3YmYzIDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5 LWFyY2guYworKysgYi9nZGIvcHl0aG9uL3B5LWFyY2guYwpAQCAtMjAsNiAr MjAsNyBAQAogI2luY2x1ZGUgImRlZnMuaCIKICNpbmNsdWRlICJnZGJhcmNo LmgiCiAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorI2luY2x1ZGUgImRpc2Fz bS5oIgogI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5oIgogCiB0eXBlZGVm IHN0cnVjdCBhcmNoX29iamVjdF90eXBlX29iamVjdCB7CkBAIC04Niw2ICs4 NywxMDQgQEAgYXJjaHB5X25hbWUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncykKICAgcmV0dXJuIHB5X25hbWU7CiB9CiAKKy8qIEltcGxlbWVu dGF0aW9uIG9mIGdkYi5BcmNoaXRlY3R1cmUuZGlzYXNzZW1ibGUgKHNlbGYs IGxvdywgaGlnaCkgLT4gTGlzdC4KKyAgIFJldHVybnMgYSBsaXN0IG9mIGlu c3RydWN0aW9ucyBpbiBhIG1lbW9yeSBhZGRyZXNzIHJhbmdlLiAgRWFjaCBp bnN0cnVjdGlvbgorICAgaW4gdGhlIGxpc3QgaXMgYSBQeXRob24gZGljdCBv YmplY3QuCisqLworCitzdGF0aWMgUHlPYmplY3QgKgorYXJjaHB5X2Rpc2Fz c2VtYmxlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2Jq ZWN0ICprdykKK3sKKyAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ICJs b3ciLCAiaGlnaCIsIE5VTEwgfTsKKyAgQ09SRV9BRERSIGxvdywgaGlnaDsK KyAgQ09SRV9BRERSIHBjOworICBQeU9iamVjdCAqcmVzdWx0X2xpc3Q7Cisg IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gYXJjaF9vYmplY3RfdG9fZ2Ri YXJjaCAoc2VsZik7CisKKyAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5 d29yZHMgKGFyZ3MsIGt3LCBHREJfUFlfTExVX0FSRyBHREJfUFlfTExVX0FS RywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdv cmRzLCAmbG93LCAmaGlnaCkpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcmVz dWx0X2xpc3QgPSBQeUxpc3RfTmV3ICgwKTsKKyAgaWYgKCFyZXN1bHRfbGlz dCkKKyAgICByZXR1cm4gTlVMTDsKKworICBmb3IgKHBjID0gbG93OyBwYyA8 PSBoaWdoOykKKyAgICB7CisgICAgICBpbnQgbGluZSA9IC0xLCB1bm1hcHBl ZCwgb2Zmc2V0ID0gLTEsIGluc25fbGVuID0gMDsKKyAgICAgIGNoYXIgKmZp bGVuYW1lID0gTlVMTCwgKmZuID0gTlVMTCwgKmFzID0gTlVMTDsKKyAgICAg IHN0cnVjdCB1aV9maWxlICptZW1maWxlID0gbWVtX2ZpbGVvcGVuICgpOwor ICAgICAgUHlPYmplY3QgKmluc25fZGljdCA9IFB5RGljdF9OZXcgKCk7Cisg ICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7CisK KyAgICAgIGlmICghaW5zbl9kaWN0KQorICAgICAgICB7CisgICAgICAgICAg UHlfREVDUkVGIChyZXN1bHRfbGlzdCk7CisgICAgICAgICAgdWlfZmlsZV9k ZWxldGUgKG1lbWZpbGUpOworCisgICAgICAgICAgcmV0dXJuIE5VTEw7Cisg ICAgICAgIH0KKyAgICAgIGlmIChQeUxpc3RfQXBwZW5kIChyZXN1bHRfbGlz dCwgaW5zbl9kaWN0KSkKKyAgICAgICAgeworICAgICAgICAgIFB5X0RFQ1JF RiAocmVzdWx0X2xpc3QpOworICAgICAgICAgIFB5X0RFQ1JFRiAoaW5zbl9k aWN0KTsKKyAgICAgICAgICB1aV9maWxlX2RlbGV0ZSAobWVtZmlsZSk7CisK KyAgICAgICAgICByZXR1cm4gTlVMTDsgIC8qIFB5TGlzdF9BcHBlbmQgU2V0 cyB0aGUgZXhjZXB0aW9uLiAgKi8KKyAgICAgICAgfQorCisgICAgICBUUllf Q0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQorICAgICAgICB7Cisg ICAgICAgICAgaW5zbl9sZW4gPSBnZGJfcHJpbnRfaW5zbiAoZ2RiYXJjaCwg cGMsIG1lbWZpbGUsIE5VTEwpOworICAgICAgICAgIC8qIEV2ZW4gdGhvdWdo IGZpbGVuYW1lLCBsaW5lIGFuZCB1bm1hcHBlZCBhcmUgcGFzc2VkIGFzIGFy Z3VtZW50cywKKyAgICAgICAgICAgICB0aGV5IGRvIG5vdCBnaXZlIHVzIGFu eSBtZWFuaW5nZnVsIHZhbHVlcyBjdXJyZW50bHkuICAqLworICAgICAgICAg IGJ1aWxkX2FkZHJlc3Nfc3ltYm9saWMgKGdkYmFyY2gsIHBjLCAwLCAmZm4s ICZvZmZzZXQsICZmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmbGluZSwgJnVubWFwcGVkKTsKKyAgICAgICAgfQorICAg ICAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQorICAgICAgICB7CisgICAgICAg ICAgUHlfREVDUkVGIChyZXN1bHRfbGlzdCk7CisgICAgICAgICAgdWlfZmls ZV9kZWxldGUgKG1lbWZpbGUpOworICAgICAgICAgIHhmcmVlIChmbik7Cisg ICAgICAgICAgeGZyZWUgKGZpbGVuYW1lKTsKKworICAgICAgICAgIHJldHVy biBnZGJweV9jb252ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0KTsKKyAgICAgICAg fQorCisgICAgICBhcyA9IHVpX2ZpbGVfeHN0cmR1cCAobWVtZmlsZSwgTlVM TCk7CisgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcgKGluc25fZGlj dCwgImFkZHIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZGJfcHlfbG9uZ19mcm9tX3Vsb25nZXN0IChwYykpCisgICAgICAgICAgfHwg UHlEaWN0X1NldEl0ZW1TdHJpbmcgKGluc25fZGljdCwgImFzbSIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21T dHJpbmcgKGFzID8gYXMgOiAiPHVua25vd24+IikpCisgICAgICAgICAgfHwg UHlEaWN0X1NldEl0ZW1TdHJpbmcgKGluc25fZGljdCwgImZ1bmMiLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9t U3RyaW5nIChmbiA/IGZuIDogIjx1bmtub3duPiIpKQorICAgICAgICAgIHx8 IFB5RGljdF9TZXRJdGVtU3RyaW5nIChpbnNuX2RpY3QsICJsZW5ndGgiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUludF9Gcm9t TG9uZyAoaW5zbl9sZW4pKQorICAgICAgICAgIHx8IFB5RGljdF9TZXRJdGVt U3RyaW5nIChpbnNuX2RpY3QsICJvZmZzZXQiLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQeUludF9Gcm9tTG9uZyAob2Zmc2V0KSkp CisgICAgICAgIHsKKyAgICAgICAgICBQeV9ERUNSRUYgKHJlc3VsdF9saXN0 KTsKKyAgICAgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVy cm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVW5hYmxlIHRv IGFkZCBmaWVsZHMgdG8gaW5zdHJ1Y3Rpb24gZGljdC4iKSk7CisKKyAgICAg ICAgICB1aV9maWxlX2RlbGV0ZSAobWVtZmlsZSk7CisgICAgICAgICAgeGZy ZWUgKGFzKTsKKyAgICAgICAgICB4ZnJlZSAoZm4pOworICAgICAgICAgIHhm cmVlIChmaWxlbmFtZSk7CisKKyAgICAgICAgICByZXR1cm4gTlVMTDsKKyAg ICAgICAgfQorCisgICAgICBwYyArPSBpbnNuX2xlbjsKKyAgICAgIHVpX2Zp bGVfZGVsZXRlIChtZW1maWxlKTsKKyAgICAgIHhmcmVlIChhcyk7CisgICAg ICB4ZnJlZSAoZm4pOworICAgICAgeGZyZWUgKGZpbGVuYW1lKTsKKyAgICB9 CisKKyAgcmV0dXJuIHJlc3VsdF9saXN0OworfQorCiAvKiBJbml0aWFsaXpl cyB0aGUgQXJjaGl0ZWN0dXJlIGNsYXNzIGluIHRoZSBnZGIgbW9kdWxlLiAg Ki8KIAogdm9pZApAQCAtMTA1LDYgKzIwNCwxMCBAQCBzdGF0aWMgUHlNZXRo b2REZWYgYXJjaF9vYmplY3RfbWV0aG9kcyBbXSA9IHsKICAgeyAibmFtZSIs IGFyY2hweV9uYW1lLCBNRVRIX05PQVJHUywKICAgICAibmFtZSAoKSAtPiBT dHJpbmcuXG5cCiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGFyY2hpdGVjdHVy ZSBhcyBhIHN0cmluZyB2YWx1ZS4iIH0sCisgIHsgImRpc2Fzc2VtYmxlIiwg KFB5Q0Z1bmN0aW9uKSBhcmNocHlfZGlzYXNzZW1ibGUsCisgICAgTUVUSF9W QVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAiZGlzYXNzZW1ibGUgKGxv dywgaGlnaCkgLT4gTGlzdC5cblwKK1JldHVybiB0aGUgbGlzdCBvZiBkaXNh c3NlbWJsZWQgaW5zdHJ1Y3Rpb25zIGZyb20gTE9XIHRvIEhJR0guIiB9LAog ICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vTWFrZWZpbGUuaW4gYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vTWFrZWZpbGUuaW4KaW5kZXggNGUyODZiNS4u MGI4MTUwNyAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L01ha2VmaWxlLmluCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9N YWtlZmlsZS5pbgpAQCAtNiw3ICs2LDcgQEAgRVhFQ1VUQUJMRVMgPSBweS10 eXBlIHB5LXZhbHVlIHB5LXByZXR0eXByaW50IHB5LXRlbXBsYXRlIHB5LWJs b2NrIFwKIAlweS1zaGFyZWQgcHl0aG9uIGxpYi10eXBlcyBweS1ldmVudHMg cHktZXZ0aHJlYWRzIHB5LWZyYW1lIFwKIAlweS1taSBweS1wcC1tYWludCBw eS1wcm9nc3BhY2UgcHktc2VjdGlvbi1zY3JpcHQgcHktb2JqZmlsZSBcCiAJ cHktZmluaXNoLWJyZWFrcG9pbnQgcHktZmluaXNoLWJyZWFrcG9pbnQyIHB5 LXZhbHVlLWNjIHB5LWV4cGxvcmUgXAotCXB5LWV4cGxvcmUtY2MKKwlweS1l eHBsb3JlLWNjIHB5LWFyY2gKIAogTUlTQ0VMTEFORU9VUyA9IHB5LXNoYXJl ZC1zbC5zbCBweS1ldmVudHMtc2hsaWIuc28gcHktZXZlbnRzLXNobGliLW5v ZGVidWcuc28gCiAKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1hcmNoLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt YXJjaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUy ZmU1NWMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktYXJjaC5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisKKyAg IENvcHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSAgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKi8KKworaW50CittYWlu ICh2b2lkKQoreworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1hcmNoLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1hcmNoLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41MTA0NjE5Ci0tLSAvZGV2L251bGwKKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWFyY2guZXhwCkBAIC0wLDAg KzEsNDUgQEAKKyMgQ29weXJpZ2h0IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMK KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK3N0YW5kYXJkX3Rl c3RmaWxlCisKK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0Zmls ZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX1dIH0geworICAgIHJldHVy biAtMQorfQorCisjIFNraXAgYWxsIHRlc3RzIGlmIFB5dGhvbiBzY3JpcHRp bmcgaXMgbm90IGVuYWJsZWQuCitpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10g fSB7IGNvbnRpbnVlIH0KKworaWYgIVtydW50b19tYWluXSB7CisgICByZXR1 cm4gLTEKK30KKworZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGZy YW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lKCkiICJnZXQgZnJhbWUiIDAKK2dk Yl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBhcmNoID0gZnJhbWUuYXJj aGl0ZWN0dXJlKCkiICJnZXQgYXJjaCIgMAorZ2RiX3B5X3Rlc3Rfc2lsZW50 X2NtZCAicHl0aG9uIHBjID0gZnJhbWUucGMoKSIgImdldCBwYyIgMAorZ2Ri X3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGluc25fbGlzdCA9IGFyY2gu ZGlzYXNzZW1ibGUocGMsIHBjKSIgImRpc2Fzc2VtYmxlIiAwCisKK2dkYl90 ZXN0ICJweXRob24gcHJpbnQgbGVuKGluc25fbGlzdCkiICIxIiAidGVzdCBu dW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIgorCitnZGJfcHlfdGVzdF9zaWxlbnRf Y21kICJweXRob24gaW5zbiA9IGluc25fbGlzdFxbMFxdIiAiZ2V0IGluc3Ry dWN0aW9uIiAwCisKK2dkYl90ZXN0ICJweXRob24gcHJpbnQgXCJhZGRyXCIg aW4gaW5zbiIgIlRydWUiICJ0ZXN0IGtleSBhZGRyIgorZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCBcImFzbVwiIGluIGluc24iICJUcnVlIiAidGVzdCBrZXkg YXNtIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBcImZ1bmNcIiBpbiBpbnNu IiAiVHJ1ZSIgInRlc3Qga2V5IGZ1bmMiCitnZGJfdGVzdCAicHl0aG9uIHBy aW50IFwibGVuZ3RoXCIgaW4gaW5zbiIgIlRydWUiICJ0ZXN0IGtleSBsZW5n dGgiCitnZGJfdGVzdCAicHl0aG9uIHByaW50IFwib2Zmc2V0XCIgaW4gaW5z biIgIlRydWUiICJ0ZXN0IGtleSBvZmZzZXQiCisKKyMgTmVnYXRpdmUgdGVz dAorZ2RiX3Rlc3QgInB5dGhvbiBhcmNoLmRpc2Fzc2VtYmxlKDAsIDApIiAi LipnZGJcLk1lbW9yeUVycm9yLioiICJ0ZXN0IGV4Y2VwdGlvbiIK --047d7b3438ecec340b04d59c15d6--