From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29575 invoked by alias); 11 Dec 2013 23:23:43 -0000 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 Received: (qmail 29560 invoked by uid 89); 11 Dec 2013 23:23:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ea0-f172.google.com Received: from mail-ea0-f172.google.com (HELO mail-ea0-f172.google.com) (209.85.215.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 11 Dec 2013 23:23:40 +0000 Received: by mail-ea0-f172.google.com with SMTP id q10so3012485ead.17 for ; Wed, 11 Dec 2013 15:23:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=Z7E4DNwxep/5u2Tner8SYUbgELe8tOLZu0AbJFn3S/Q=; b=AcsVaLNw8oDQJesof6Rjs5UVSzeNmnJ9ZVUeN1hE8XpZbw2e4rcGedptkIfsnyNPAp J1BZhLkovN2ODOBh/GHKG8mkqBL+k9QJJ0l81A0VVdYZRtxLZdoB1DbMmvc6dRigdER1 DwZRhcvKQvTvvKkirKFQfGAfJ0XzLs5Tw5e0EFi9mlS6HFrBs9l7U1HVyB8I6hFFiTb1 82gBt3saxa5Xh0SAK/Wglth85ThU9xhlRHgoRrrxnGhx9E86uuqyXoHEj7uSuxktiZvi z0f878ezh5bImR6nRB0dajPZ1mYO7x8tO3AVr4AU5xAzVsQkosAPGsVT+oxMbJ3nzWVF 5WPQ== X-Gm-Message-State: ALoCoQl8uzcQHyGYjnwWYbtPR2lOXFifJ+HTTcqTaoJ5CdkX7h0sUsfZduR3Jfsj4ytaMYfu1cXWZOinlMlOMTYmP0Djy9n86e0JL19fGAymGvVfLUxOm5Rhcraa4Hka1FPfuRD/LylrBAaMZDRHIek7jk5oLdl29o51SN5t5CjQJyBaPT7KCF48+3VU9QDpo7wIsvks77CW4qpWSlpERGHK1vabouoHaA== MIME-Version: 1.0 X-Received: by 10.14.3.130 with SMTP id 2mr4423451eeh.36.1386804217087; Wed, 11 Dec 2013 15:23:37 -0800 (PST) Received: by 10.14.151.72 with HTTP; Wed, 11 Dec 2013 15:23:36 -0800 (PST) Date: Wed, 11 Dec 2013 23:23:00 -0000 Message-ID: Subject: [RFC/Patch v3] PR 16113: Allow gdb.Field objects as subscripts on gdb.Value objects From: Siva Chandra To: gdb-patches Content-Type: multipart/mixed; boundary=047d7b62484ebbb48a04ed4a84e1 X-IsSubscribed: yes X-SW-Source: 2013-12/txt/msg00457.txt.bz2 --047d7b62484ebbb48a04ed4a84e1 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2546 The attached patch addresses all of Tom's comments except two for which I have responses below: Tom> What about TYPE_CODE_UNION and TYPE_CODE_RANGE? Tom> Offhand I don't recall if other types present "fields". Tom> Maybe TYPE_CODE_FUNC? TYPE_CODE_COMPLEX? I missed TYPE_CODE_UNION so I have added it in the attached patch. The other types do not support the "fields" method. [But, is it a mistake that we do not support fields for other methods? The documentation does talk about ranges, functions and methods. At this point, I am tempted to ask as to why we should "overload" the method "fields" to return function/method args? Can we bring in a class hierarchy of types where in gdb.Type exists as a base class, and gdb.TypeStruct, gdb.TypeFunction etc. are derived from it. That way, we can add relevant methods to the respective classes. For example, gdb.TypeFunction will have "args" as a method and not "fields". I understand the notion of fields is overloaded internally, but we could make the Python API clearer.] Siva> + arg = type_to_type_object (type); Siva> + if (arg == NULL) Siva> + goto fail; Tom> I think if TYPE is not a gdb.Type then this will return -1 without Tom> setting the Python exception. The above comment is for the change in py-type.c. The variable TYPE in question here is "struct type" and not gdb.Type. I think type_to_type_object would return NULL only if PyObject_New called in it fails. Is an exception not set by PyObject_New on failure? 2013-12-11 Siva Chandra Reddy PR 16113: Allow gdb.Field objects with the subscript operator on gdb.Value objects of struct/class values. * NEWS (Python Scripting): Add entry for the new feature and the new attribute of gdb.Field objects. * python/py-type.c (gdbpy_is_field): New function (convert_field): Add 'parent_type' attribute to gdb.Field objects. * python/py-value.c (valpy_getitem): Allow subscript value to be a gdb.Field object. (value_has_field): New function (get_field_flag): New function * python/python-internal.h (gdbpy_is_field): Add declaration. testsuite/ * gdb.python/py-value-cc.cc: Improve test case. * gdb.python/py-value-cc.exp: Add new tests. doc/ * gdb.texinfo (Values From Inferior): Add a note about using gdb.Field objects as subscripts on gdb.Value objects. (Types In Python): Add description about the new attribute of gdb.Field objects. --047d7b62484ebbb48a04ed4a84e1 Content-Type: text/plain; charset=US-ASCII; name="value_field_subscript_patch_v3.txt" Content-Disposition: attachment; filename="value_field_subscript_patch_v3.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hp376cu50 Content-length: 14982 ZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKaW5kZXggZWZmMDU3 Zi4uZTRiYWY1MCAxMDA2NDQKLS0tIGEvZ2RiL05FV1MKKysrIGIvZ2RiL05F V1MKQEAgLTQwLDYgKzQwLDggQEAKICAgKiogRnJhbWUgZmlsdGVycyBhbmQg ZnJhbWUgZGVjb3JhdG9ycyBoYXZlIGJlZW4gYWRkZWQuCiAgICoqIFRlbXBv cmFyeSBicmVha3BvaW50cyBhcmUgbm93IHN1cHBvcnRlZC4KICAgKiogTGlu ZSB0YWJsZXMgcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gYWRkZWQuCisgICoq IE5ldyBhdHRyaWJ1dGUgJ3BhcmVudF90eXBlJyBmb3IgZ2RiLkZpZWxkIG9i amVjdHMuCisgICoqIGdkYi5GaWVsZCBvYmplY3RzIGNhbiBiZSB1c2VkIGFz IHN1YnNjcmlwdHMgb24gZ2RiLlZhbHVlIG9iamVjdHMuCiAKICogTmV3IHRh cmdldHMKIApkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KaW5kZXggN2RmYTlmNi4uNDlkY2UwMyAxMDA2 NDQKLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysgYi9nZGIvZG9jL2dk Yi50ZXhpbmZvCkBAIC0yMzk4NSw3ICsyMzk4NSwxNyBAQCBjYW4gYWNjZXNz IGl0cyBAY29kZXtmb299IGVsZW1lbnQgd2l0aDoKIGJhciA9IHNvbWVfdmFs Wydmb28nXQogQGVuZCBzbWFsbGV4YW1wbGUKIAotQWdhaW4sIEBjb2Rle2Jh cn0gd2lsbCBhbHNvIGJlIGEgQGNvZGV7Z2RiLlZhbHVlfSBvYmplY3QuCitA Y2luZGV4IGdldHRpbmcgc3RydWN0dXJlIGVsZW1lbnRzIHVzaW5nIGdkYi5G aWVsZCBvYmplY3RzIGFzIHN1YnNjcmlwdHMKK0FnYWluLCBAY29kZXtiYXJ9 IHdpbGwgYWxzbyBiZSBhIEBjb2Rle2dkYi5WYWx1ZX0gb2JqZWN0LiAgU3Ry dWN0dXJlCitlbGVtZW50cyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBieSB1c2lu ZyBAY29kZXtnZGIuRmllbGR9IG9iamVjdHMgYXMKK3N1YnNjcmlwdHMgKEB4 cmVme1R5cGVzIEluIFB5dGhvbn0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24K K0Bjb2Rle2dkYi5GaWVsZH0gb2JqZWN0cykuICBGb3IgZXhhbXBsZSwgaWYg QGNvZGV7Zm9vX2ZpZWxkfSBpcyBhCitAY29kZXtnZGIuRmllbGR9IG9iamVj dCBjb3JyZXNwb25kaW5nIHRvIGVsZW1lbnQgQGNvZGV7Zm9vfSBvZiB0aGUg YWJvdmUKK3N0cnVjdHVyZSwgdGhlbiBAY29kZXtiYXJ9IGNhbiBhbHNvIGJl IGFjY2Vzc2VkIGFzIGZvbGxvd3M6CisKK0BzbWFsbGV4YW1wbGUKK2JhciA9 IHNvbWVfdmFsW2Zvb19maWVsZF0KK0BlbmQgc21hbGxleGFtcGxlCiAKIEEg QGNvZGV7Z2RiLlZhbHVlfSB0aGF0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiBj YW4gYmUgZXhlY3V0ZWQgdmlhCiBpbmZlcmlvciBmdW5jdGlvbiBjYWxsLiAg QW55IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgY2FsbCBtdXN0IG1hdGNo CkBAIC0yNDM2Nyw2ICsyNDM3NywxMCBAQCB0aGlzIHdpbGwgYmUgemVybzsg aW4gdGhpcyBjYXNlIHRoZSBmaWVsZCdzIHNpemUgaXMgZ2l2ZW4gYnkgaXRz IHR5cGUuCiBAaXRlbSB0eXBlCiBUaGUgdHlwZSBvZiB0aGUgZmllbGQuICBU aGlzIGlzIHVzdWFsbHkgYW4gaW5zdGFuY2Ugb2YgQGNvZGV7VHlwZX0sCiBi dXQgaXQgY2FuIGJlIEBjb2Rle05vbmV9IGluIHNvbWUgc2l0dWF0aW9ucy4K KworQGl0ZW0gcGFyZW50X3R5cGUKK1RoZSB0eXBlIHdoaWNoIGNvbnRhaW5z IHRoaXMgZmllbGQuICBUaGlzIGlzIGFuIGluc3RhbmNlIG9mCitAY29kZXtn ZGIuVHlwZX0uCiBAZW5kIHRhYmxlCiBAZW5kIGRlZnVuCiAKZGlmZiAtLWdp dCBhL2dkYi9weXRob24vcHktdHlwZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBl LmMKaW5kZXggOWFlYjkyYy4uNGFkMWUxMiAxMDA2NDQKLS0tIGEvZ2RiL3B5 dGhvbi9weS10eXBlLmMKKysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKQEAg LTE0Niw2ICsxNDYsMTQgQEAgZmllbGRfbmV3ICh2b2lkKQogCiAMCiAKKy8q IFJldHVybiB0cnVlIGlmIE9CSiBpcyBvZiB0eXBlIGdkYi5GaWVsZCwgZmFs c2Ugb3RoZXJ3aXNlLiAgKi8KKworaW50CitnZGJweV9pc19maWVsZCAoUHlP YmplY3QgKm9iaikKK3sKKyAgcmV0dXJuIFB5T2JqZWN0X1R5cGVDaGVjayAo b2JqLCAmZmllbGRfb2JqZWN0X3R5cGUpOworfQorCiAvKiBSZXR1cm4gdGhl IGNvZGUgZm9yIHRoaXMgdHlwZS4gICovCiBzdGF0aWMgUHlPYmplY3QgKgog dHlweV9nZXRfY29kZSAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUp CkBAIC0xNjcsNiArMTc1LDEzIEBAIGNvbnZlcnRfZmllbGQgKHN0cnVjdCB0 eXBlICp0eXBlLCBpbnQgZmllbGQpCiAgIGlmICghcmVzdWx0KQogICAgIHJl dHVybiBOVUxMOwogCisgIGFyZyA9IHR5cGVfdG9fdHlwZV9vYmplY3QgKHR5 cGUpOworICBpZiAoYXJnID09IE5VTEwpCisgICAgZ290byBmYWlsOworICBp ZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyAocmVzdWx0LCAicGFyZW50X3R5 cGUiLCBhcmcpIDwgMCkKKyAgICBnb3RvIGZhaWxhcmc7CisgIFB5X0RFQ1JF RiAoYXJnKTsKKwogICBpZiAoIWZpZWxkX2lzX3N0YXRpYyAoJlRZUEVfRklF TEQgKHR5cGUsIGZpZWxkKSkpCiAgICAgewogICAgICAgY29uc3QgY2hhciAq YXR0cnN0cmluZzsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUu YyBiL2dkYi9weXRob24vcHktdmFsdWUuYwppbmRleCA0MDI1NGI5Li5kZjI1 MTc5IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKKysrIGIv Z2RiL3B5dGhvbi9weS12YWx1ZS5jCkBAIC00OTksMTMgKzQ5OSw4MCBAQCB2 YWxweV9sZW5ndGggKFB5T2JqZWN0ICpzZWxmKQogICByZXR1cm4gLTE7CiB9 CiAKLS8qIEdpdmVuIHN0cmluZyBuYW1lIG9mIGFuIGVsZW1lbnQgaW5zaWRl IHN0cnVjdHVyZSwgcmV0dXJuIGl0cyB2YWx1ZQotICAgb2JqZWN0LiAgUmV0 dXJucyBOVUxMIG9uIGVycm9yLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBz ZXQuICAqLworLyogUmV0dXJuIDEgaWYgdGhlIGdkYi5GaWVsZCBvYmplY3Qg RklFTEQgaXMgcHJlc2VudCBpbiB0aGUgdmFsdWUgVi4KKyAgIFJldHVybnMg MCBvdGhlcndpc2UuICBJZiBhbnkgUHl0aG9uIGVycm9yIG9jY3VycywgLTEg aXMgcmV0dXJuZWQuICAqLworCitzdGF0aWMgaW50Cit2YWx1ZV9oYXNfZmll bGQgKHN0cnVjdCB2YWx1ZSAqdiwgUHlPYmplY3QgKmZpZWxkKQoreworICBz dHJ1Y3QgdHlwZSAqcGFyZW50X3R5cGUsICp2YWxfdHlwZTsKKyAgZW51bSB0 eXBlX2NvZGUgdHlwZV9jb2RlOworICBQeU9iamVjdCAqdHlwZV9vYmplY3Qg PSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nIChmaWVsZCwgInBhcmVudF90eXBl Iik7CisgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsK KyAgaW50IGhhc19maWVsZCA9IDA7CisKKyAgaWYgKHR5cGVfb2JqZWN0ID09 IE5VTEwpCisgICAgcmV0dXJuIC0xOworCisgIHBhcmVudF90eXBlID0gdHlw ZV9vYmplY3RfdG9fdHlwZSAodHlwZV9vYmplY3QpOworICBQeV9ERUNSRUYg KHR5cGVfb2JqZWN0KTsKKyAgaWYgKHBhcmVudF90eXBlID09IE5VTEwpCisg ICAgeworICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJyb3Is CisJCSAgICAgICBfKCIncGFyZW50X3R5cGUnIGF0dHJpYnV0ZSBvZiBnZGIu RmllbGQgb2JqZWN0IGlzIG5vdCBhIgorCQkJICJnZGIuVHlwZSBvYmplY3Qu IikpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICBUUllfQ0FUQ0gg KGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQorICAgIHsKKyAgICAgIHZhbF90 eXBlID0gdmFsdWVfdHlwZSAodik7CisgICAgICB2YWxfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHZhbF90eXBlKTsKKyAgICAgIGlmIChUWVBFX0NPREUgKHZh bF90eXBlKSA9PSBUWVBFX0NPREVfUkVGCisJICB8fCBUWVBFX0NPREUgKHZh bF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorICAgICAgdmFsX3R5cGUgPSBj aGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh2YWxfdHlwZSkpOwor CisgICAgICB0eXBlX2NvZGUgPSBUWVBFX0NPREUgKHZhbF90eXBlKTsKKyAg ICAgIGlmICgodHlwZV9jb2RlID09IFRZUEVfQ09ERV9TVFJVQ1QgfHwgdHlw ZV9jb2RlID09IFRZUEVfQ09ERV9VTklPTikKKwkgICYmIHR5cGVzX2VxdWFs ICh2YWxfdHlwZSwgcGFyZW50X3R5cGUpKQorCWhhc19maWVsZCA9IDE7Cisg ICAgICBlbHNlCisJaGFzX2ZpZWxkID0gMDsKKyAgICB9CisgIEdEQl9QWV9T RVRfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKKworICByZXR1cm4gaGFz X2ZpZWxkOworfQorCisvKiBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZmxhZyBG TEFHX05BTUUgaW4gYSBnZGIuRmllbGQgb2JqZWN0IEZJRUxELgorICAgUmV0 dXJucyAxIGlmIHRoZSBmbGFnIHZhbHVlIGlzIHRydWUsIDAgaWYgaXQgaXMg ZmFsc2UsIGFuZCAtMSBpZgorICAgYSBQeXRob24gZXJyb3Igb2NjdXJzLiAg Ki8KKworc3RhdGljIGludAorZ2V0X2ZpZWxkX2ZsYWcgKFB5T2JqZWN0ICpm aWVsZCwgY29uc3QgY2hhciAqZmxhZ19uYW1lKQoreworICBpbnQgZmxhZ192 YWx1ZTsKKyAgUHlPYmplY3QgKmZsYWdfb2JqZWN0ID0gUHlPYmplY3RfR2V0 QXR0clN0cmluZyAoZmllbGQsIGZsYWdfbmFtZSk7CisKKyAgaWYgKGZsYWdf b2JqZWN0ID09IE5VTEwpCisgICAgcmV0dXJuIC0xOworCisgIGZsYWdfdmFs dWUgPSBQeU9iamVjdF9Jc1RydWUgKGZsYWdfb2JqZWN0KTsKKyAgUHlfREVD UkVGIChmbGFnX29iamVjdCk7CisKKyAgcmV0dXJuIGZsYWdfdmFsdWU7Cit9 CisKKy8qIEdpdmVuIHN0cmluZyBuYW1lIG9yIGEgZ2RiLkZpZWxkIG9iamVj dCBjb3JyZXNwb25kaW5nIHRvIGFuIGVsZW1lbnQgaW5zaWRlCisgICBhIHN0 cnVjdHVyZSwgcmV0dXJuIGl0cyB2YWx1ZSBvYmplY3QuICBSZXR1cm5zIE5V TEwgb24gZXJyb3IsIHdpdGggYSBweXRob24KKyAgIGV4Y2VwdGlvbiBzZXQu ICAqLworCiBzdGF0aWMgUHlPYmplY3QgKgogdmFscHlfZ2V0aXRlbSAoUHlP YmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCiB7CiAgIHZhbHVlX29iamVj dCAqc2VsZl92YWx1ZSA9ICh2YWx1ZV9vYmplY3QgKikgc2VsZjsKICAgY2hh ciAqZmllbGQgPSBOVUxMOworICBQeU9iamVjdCAqYmFzZV9jbGFzc190eXBl X29iamVjdCA9IE5VTEw7CiAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0 aW9uIGV4Y2VwdDsKICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAg LTUxNSw2ICs1ODIsNDQgQEAgdmFscHlfZ2V0aXRlbSAoUHlPYmplY3QgKnNl bGYsIFB5T2JqZWN0ICprZXkpCiAgICAgICBpZiAoZmllbGQgPT0gTlVMTCkK IAlyZXR1cm4gTlVMTDsKICAgICB9CisgIGVsc2UgaWYgKGdkYnB5X2lzX2Zp ZWxkIChrZXkpKQorICAgIHsKKyAgICAgIGludCBpc19iYXNlX2NsYXNzLCB2 YWxpZF9maWVsZDsKKworICAgICAgdmFsaWRfZmllbGQgPSB2YWx1ZV9oYXNf ZmllbGQgKHNlbGZfdmFsdWUtPnZhbHVlLCBrZXkpOworICAgICAgaWYgKHZh bGlkX2ZpZWxkIDwgMCkKKwlyZXR1cm4gTlVMTDsKKyAgICAgIGVsc2UgaWYg KHZhbGlkX2ZpZWxkID09IDApCisJeworCSAgUHlFcnJfU2V0U3RyaW5nIChQ eUV4Y19UeXBlRXJyb3IsCisJCQkgICBfKCJJbnZhbGlkIGxvb2t1cCBmb3Ig YSBmaWVsZCBub3QgY29udGFpbmVkIGluICIKKwkJCSAgICAgInRoZSB2YWx1 ZS4iKSk7CisKKwkgIHJldHVybiBOVUxMOworCX0KKworICAgICAgaXNfYmFz ZV9jbGFzcyA9IGdldF9maWVsZF9mbGFnIChrZXksICJpc19iYXNlX2NsYXNz Iik7CisgICAgICBpZiAoaXNfYmFzZV9jbGFzcyA8IDApCisJcmV0dXJuIE5V TEw7CisgICAgICBlbHNlIGlmIChpc19iYXNlX2NsYXNzID4gMCkKKwl7CisJ ICBiYXNlX2NsYXNzX3R5cGVfb2JqZWN0ID0gUHlPYmplY3RfR2V0QXR0clN0 cmluZyAoa2V5LCAidHlwZSIpOworCSAgaWYgKGJhc2VfY2xhc3NfdHlwZV9v YmplY3QgPT0gTlVMTCkKKwkgICAgcmV0dXJuIE5VTEw7CisJfQorICAgICAg ZWxzZQorCXsKKwkgIFB5T2JqZWN0ICpuYW1lX29iaiA9IFB5T2JqZWN0X0dl dEF0dHJTdHJpbmcgKGtleSwgIm5hbWUiKTsKKworCSAgaWYgKG5hbWVfb2Jq ID09IE5VTEwpCisJICAgIHJldHVybiBOVUxMOworCisJICBmaWVsZCA9IHB5 dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKG5hbWVfb2JqKTsKKwkgIFB5 X0RFQ1JFRiAobmFtZV9vYmopOworCSAgaWYgKGZpZWxkID09IE5VTEwpCisJ ICAgIHJldHVybiBOVUxMOworCX0KKyAgICB9CiAKICAgVFJZX0NBVENIIChl eGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKICAgICB7CkBAIC01MjQsNiArNjI5 LDIzIEBAIHZhbHB5X2dldGl0ZW0gKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqa2V5KQogCiAgICAgICBpZiAoZmllbGQpCiAJcmVzX3ZhbCA9IHZhbHVl X3N0cnVjdF9lbHQgKCZ0bXAsIE5VTEwsIGZpZWxkLCAwLCBOVUxMKTsKKyAg ICAgIGVsc2UgaWYgKGJhc2VfY2xhc3NfdHlwZV9vYmplY3QgIT0gTlVMTCkK Kwl7CisJICBzdHJ1Y3QgdHlwZSAqYmFzZV9jbGFzc190eXBlLCAqdmFsX3R5 cGU7CisKKwkgIGJhc2VfY2xhc3NfdHlwZSA9IHR5cGVfb2JqZWN0X3RvX3R5 cGUgKGJhc2VfY2xhc3NfdHlwZV9vYmplY3QpOworCSAgUHlfREVDUkVGIChi YXNlX2NsYXNzX3R5cGVfb2JqZWN0KTsKKwkgIGlmIChiYXNlX2NsYXNzX3R5 cGUgPT0gTlVMTCkKKwkgICAgZXJyb3IgKF8oIkZpZWxkIHR5cGUgbm90IGFu IGluc3RhbmNlIG9mIGdkYi5UeXBlLiIpKTsKKworCSAgdmFsX3R5cGUgPSBj aGVja190eXBlZGVmICh2YWx1ZV90eXBlICh0bXApKTsKKwkgIGlmIChUWVBF X0NPREUgKHZhbF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorCSAgICByZXNf dmFsID0gdmFsdWVfY2FzdCAobG9va3VwX3BvaW50ZXJfdHlwZSAoYmFzZV9j bGFzc190eXBlKSwgdG1wKTsKKwkgIGVsc2UgaWYgKFRZUEVfQ09ERSAodmFs X3R5cGUpID09IFRZUEVfQ09ERV9SRUYpCisJICAgIHJlc192YWwgPSB2YWx1 ZV9jYXN0IChsb29rdXBfcmVmZXJlbmNlX3R5cGUgKGJhc2VfY2xhc3NfdHlw ZSksIHRtcCk7CisJICBlbHNlCisJICAgIHJlc192YWwgPSB2YWx1ZV9jYXN0 IChiYXNlX2NsYXNzX3R5cGUsIHRtcCk7CisJfQogICAgICAgZWxzZQogCXsK IAkgIC8qIEFzc3VtZSB3ZSBhcmUgYXR0ZW1wdGluZyBhbiBhcnJheSBhY2Nl c3MsIGFuZCBsZXQgdGhlCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhv bi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaApp bmRleCAxMjU2NzBlLi5kYWRlN2M3IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9u L3B5dGhvbi1pbnRlcm5hbC5oCisrKyBiL2dkYi9weXRob24vcHl0aG9uLWlu dGVybmFsLmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBQeU9iamVjdCAqZ2RicHlf bmV3ZXN0X2ZyYW1lIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Mp OwogUHlPYmplY3QgKmdkYnB5X3NlbGVjdGVkX2ZyYW1lIChQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MpOwogUHlPYmplY3QgKmdkYnB5X2Jsb2Nr X2Zvcl9wYyAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKIFB5 T2JqZWN0ICpnZGJweV9sb29rdXBfdHlwZSAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpOworaW50IGdkYnB5X2lzX2Zp ZWxkIChQeU9iamVjdCAqb2JqKTsKIFB5T2JqZWN0ICpnZGJweV9jcmVhdGVf bGF6eV9zdHJpbmdfb2JqZWN0IChDT1JFX0FERFIgYWRkcmVzcywgbG9uZyBs ZW5ndGgsCiAJCQkJCSAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogCQkJCQkg ICBzdHJ1Y3QgdHlwZSAqdHlwZSk7CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktdmFsdWUtY2MuY2MgYi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktdmFsdWUtY2MuY2MKaW5kZXggYzAxMGZjOS4uODAw OTRlYyAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXZhbHVlLWNjLmNjCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS12YWx1ZS1jYy5jYwpAQCAtMTYsOCArMTYsMjEgQEAKICAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogY2xhc3MgQSB7CisgcHVibGljOgor ICBpbnQgYTsKIH07CiAKK3VuaW9uIFUgeworICBpbnQgYTsKKyAgY2hhciBj OworfTsKKworY2xhc3MgQiA6IHB1YmxpYyBBIHsKKyBwdWJsaWM6CisgIGNo YXIgYTsKK307CisKK3R5cGVkZWYgQiBCdGQ7CiB0eXBlZGVmIGludCAqaW50 X3B0cjsKIAogaW50CkBAIC0yOCw2ICs0MSwyMiBAQCBmdW5jIChjb25zdCBB ICZhKQogICBpbnRfcHRyIHB0ciA9ICZ2YWw7CiAgIGludF9wdHIgJmludF9w dHJfcmVmID0gcHRyOwogCisgIEIgYjsKKyAgQiBiMTsKKworICBiLmEgPSAn YSc7CisgIGIuQTo6YSA9IDEwOworCisgIEIgKmJfb2JqID0gJmIxOworICBi X29iai0+YSA9ICdiJzsKKyAgYl9vYmotPkE6OmEgPSAxMDA7CisKKyAgQiAm Yl9yZWYgPSBiMTsKKyAgQnRkICZiX3RkID0gYjE7CisKKyAgVSB1OworICB1 LmEgPSA5OTsKKwogICByZXR1cm4gMDsgLyogQnJlYWsgaGVyZS4gICovCiB9 CiAKQEAgLTM1LDUgKzY0LDYgQEAgaW50CiBtYWluICgpCiB7CiAgIEEgb2Jq OworCiAgIHJldHVybiBmdW5jIChvYmopOwogfQpkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLWNjLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS1jYy5leHAKaW5kZXggNTVj M2I5Ny4uZWFjYWYyZSAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXZhbHVlLWNjLmV4cAorKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktdmFsdWUtY2MuZXhwCkBAIC00NCwzICs0NCwzOCBAQCBn ZGJfdGVzdCAicHl0aG9uIHByaW50IChzdHIoZ2RiLnBhcnNlX2FuZF9ldmFs KFwiaW50X3B0cl9yZWZcIikuZGVyZWZlcmVuY2UoKS50eQogZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCAoc3RyKGdkYi5wYXJzZV9hbmRfZXZhbChcImludF9w dHJfcmVmXCIpLnJlZmVyZW5jZWRfdmFsdWUoKS50eXBlKSkiICJpbnRfcHRy IgogZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAoc3RyKGdkYi5wYXJzZV9hbmRf ZXZhbChcImludF9wdHJfcmVmXCIpLnJlZmVyZW5jZWRfdmFsdWUoKS5kZXJl ZmVyZW5jZSgpKSkiICIxMCIKIGdkYl90ZXN0ICJweXRob24gcHJpbnQgKHN0 cihnZGIucGFyc2VfYW5kX2V2YWwoXCJpbnRfcHRyX3JlZlwiKS5yZWZlcmVu Y2VkX3ZhbHVlKCkucmVmZXJlbmNlZF92YWx1ZSgpKSkiICIxMCIKKworIyBU ZXN0cyBmb3IgZ2RiLlZhbHVlW2dkYi5GaWVsZF0KK2dkYl90ZXN0X25vX291 dHB1dCAicHl0aG9uIGIgPSBnZGIucGFyc2VfYW5kX2V2YWwoJ2InKSIgImlu aXQgYiIKK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGJfZmllbGRzID0g Yi50eXBlLmZpZWxkcygpIiAiaW5pdCBiX2ZpZWxkcyIKK2dkYl90ZXN0X25v X291dHB1dCAicHl0aG9uIGJfb2JqID0gZ2RiLnBhcnNlX2FuZF9ldmFsKCdi X29iaicpIiAiaW5pdCBiX29iaiIKK2dkYl90ZXN0X25vX291dHB1dCAicHl0 aG9uIGJfcmVmID0gZ2RiLnBhcnNlX2FuZF9ldmFsKCdiX3JlZicpIiAiaW5p dCBiX3JlZiIKK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGJfdGQgPSBn ZGIucGFyc2VfYW5kX2V2YWwoJ2JfdGQnKSIgImluaXQgYl90ZCIKK2dkYl90 ZXN0X25vX291dHB1dCAicHl0aG9uIHUgPSBnZGIucGFyc2VfYW5kX2V2YWwo J3UnKSIgImluaXQgdSIKK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIHVf ZmllbGRzID0gdS50eXBlLmZpZWxkcygpIiAiaW5pdCB1X2ZpZWxkcyIKKwor Z2RiX3Rlc3QgInB5dGhvbiBwcmludChiXFtiX2ZpZWxkc1xbMVxdXF0pIiAi OTcgJ2EnIiAiYi5hIHZpYSBmaWVsZCIKK2dkYl90ZXN0ICJweXRob24gcHJp bnQoYlxbYl9maWVsZHNcWzBcXVxdLnR5cGUpIiAiQSIgXAorICAidHlwZSBv ZiBiJ3MgYmFzZSBjbGFzcyB2aWEgZmllbGQiCitnZGJfdGVzdCAicHl0aG9u IHByaW50KGJcW2JfZmllbGRzXFswXF1cXVxbJ2EnXF0pIiAiMTAiICJiLkE6 OmEgdmlhIGZpZWxkIgorCitnZGJfdGVzdCAicHl0aG9uIHByaW50KGJfb2Jq XFtiX2ZpZWxkc1xbMVxdXF0pIiAiOTggJ2InIiAiYl9vYmotPmEgdmlhIGZp ZWxkIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmludChiX29ialxbYl9maWVsZHNc WzBcXVxdLnR5cGUudGFyZ2V0KCkpIiAiQSIgXAorICAidHlwZSBvZiBiX29i aidzIGJhc2UgY2xhc3MgdmlhIGZpZWxkIgorZ2RiX3Rlc3QgInB5dGhvbiBw cmludChiX29ialxbYl9maWVsZHNcWzBcXVxdXFsnYSdcXSkiICIxMDAiIFwK KyAgImJfb2JqLT5BOjphIHZpYSBmaWVsZCIKKworZ2RiX3Rlc3QgInB5dGhv biBwcmludChiX3JlZlxbYl9maWVsZHNcWzFcXVxdKSIgIjk4ICdiJyIgImJf cmVmLmEgdmlhIGZpZWxkIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmludChiX3Jl ZlxbYl9maWVsZHNcWzBcXVxdLnR5cGUudGFyZ2V0KCkpIiAiQSIgXAorICAi dHlwZSBvZiBiX3JlZidzIGJhc2UgY2xhc3MgdmlhIGZpZWxkIgorZ2RiX3Rl c3QgInB5dGhvbiBwcmludChiX3JlZlxbYl9maWVsZHNcWzBcXVxdXFsnYSdc XSkiICIxMDAiIFwKKyAgImJfcmVmLkE6OmEgdmlhIGZpZWxkIgorCitnZGJf dGVzdCAicHl0aG9uIHByaW50KGJfdGRcW2JfZmllbGRzXFsxXF1cXSkiICI5 OCAnYiciICJiX3RkLmEgdmlhIGZpZWxkIgorZ2RiX3Rlc3QgInB5dGhvbiBw cmludChiX3RkXFtiX2ZpZWxkc1xbMFxdXF0udHlwZS50YXJnZXQoKSkiICJB IiBcCisgICJ0eXBlIG9mIGJfdGQncyBiYXNlIGNsYXNzIHZpYSBmaWVsZCIK K2dkYl90ZXN0ICJweXRob24gcHJpbnQoYl90ZFxbYl9maWVsZHNcWzBcXVxd XFsnYSdcXSkiICIxMDAiIFwKKyAgImJfdGQuQTo6YSB2aWEgZmllbGQiCisK K2dkYl90ZXN0ICJweXRob24gcHJpbnQodVxbdV9maWVsZHNcWzBcXVxdKSIg Ijk5LioiICJ1J3MgZmlyc3QgZmllbGQgdmlhIGZpZWxkIgorZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCh1XFt1X2ZpZWxkc1xbMVxdXF0pIiAiOTkuKiIgInUn cyBzZWNvbmQgZmllbGQgdmlhIGZpZWxkIgo= --047d7b62484ebbb48a04ed4a84e1--