From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15849 invoked by alias); 1 Jun 2012 19:52:34 -0000 Received: (qmail 15837 invoked by uid 22791); 1 Jun 2012 19:52:31 -0000 X-SWARE-Spam-Status: No, hits=-4.5 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BJ,TW_FN,TW_RG,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-qa0-f41.google.com (HELO mail-qa0-f41.google.com) (209.85.216.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 01 Jun 2012 19:52:12 +0000 Received: by qabg27 with SMTP id g27so667528qab.0 for ; Fri, 01 Jun 2012 12:52:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :x-system-of-record:x-gm-message-state; bh=vG4mcar3nogIaB8ijC3VPxsOqZGjGueDlYBdfBGDoJM=; b=k6Ie04YG96d0Oe2DNjyXQMpk/WFSTYTLmpuCJJB7UqemWskeloqXD80HG3LX1S9rZ4 HxK6Vmg8Ul3doAIJEYwHfWNll/+AKp+iC5Go3ZQGIB2FX8my7F86esswx5xtTlHU8OTw dXhcphI6QtTf/8td9gm1f/oHp0T4sD6tvq/fJaJdqYWhm9U86mFx8oXvyayJR3IOgmcc HQqwni3WjA2Ps4GDVOixiDP1xQcjvMSXg+D1JoddSFRs/GlUDGa6/4trMP5WmxXkqreW 4Qbk5H9o9SklItlQHKNbrHJyMjNxz+SND2u2YkpgRPGUA2eTLokYZRjl/6K+aFZV5jbb ZruA== Received: by 10.224.196.200 with SMTP id eh8mr5466395qab.88.1338580331616; Fri, 01 Jun 2012 12:52:11 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.196.200 with SMTP id eh8mr5466383qab.88.1338580331395; Fri, 01 Jun 2012 12:52:11 -0700 (PDT) Received: by 10.224.131.26 with HTTP; Fri, 1 Jun 2012 12:52:11 -0700 (PDT) Date: Fri, 01 Jun 2012 19:52:00 -0000 Message-ID: Subject: [RFC] Extend existing support for evaluating expressions using overloaded operators From: Siva Chandra To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=20cf300fb33f27f8eb04c16e8586 X-System-Of-Record: true X-Gm-Message-State: ALoCoQmkv8pXIx2uxlzrDq7NZpIqWD0dWhT2qy1oNV2UoU+COLBP4cjbf9sgRhBJFuMkNzW10pDk4zJF6q+Q85SPB1RIG+xpG+ecMRWZgBqCsJQu7+gIUooLOrq4zXnqD4tgixZpmfjg4yBNz9jG+G0zvBt1v6x4cA== 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: 2012-06/txt/msg00037.txt.bz2 --20cf300fb33f27f8eb04c16e8586 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1777 Hello, The attached patch extends the existing support for evaluating expressions using overloaded operators defined in C++ source. For example, currently we do not support evaluation of a binary operation if the first operand is a non-struct and the second operand is a struct. To illustrate, if in C++ source we have class Integer { ... }; int operator+ (const int a, const Interger &b) { ... } int an_int; Integer an_integer; then, at GDB prompt, we cannot do this (gdb) p an_int + an_integer The attached patch adds this support. 2012-06-01 Siva Chandra Reddy Extend existing support for evaluating expressions using overloaded operators. * gdtypes.c (is_scalar_type): Make the function non-static. (is_compound_type): New function to test if a type is a compound type. * gdbtypes.h (is_scalar_type, is_compound_type): Add declarations for these functions. * valarith.c (value_binop): Extend to handle overloaded binary operations on compound types. (value_x_binop): Extend to handle binary operations which have atleast one compound value operand. * valops.c (find_overload_match): Lookup overloaded operator function when lookup for overloaded operator method throws an exception. testsuite/ * gdb.cp/operator.cc: Add test cases to test overloaded binary operator evaluation. * gdb.python/py-value.cc: Likewise * gdb.cp/operator.exp: Add tests to test overloaded binary operator evaluation. * gdb.python/py-value-cc.exp: Likewise * gdb.python/py-value.exp: Fix a test case to align it with the new error message. Thanks, Siva Chandra --20cf300fb33f27f8eb04c16e8586 Content-Type: text/plain; charset=US-ASCII; name="oprovld_patch_v1.txt" Content-Disposition: attachment; filename="oprovld_patch_v1.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h2xmpizf0 Content-length: 14608 SW5kZXg6IGdkYnR5cGVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9nZGJ0eXBlcy5jLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjIzMApkaWZmIC11IC1wIC1yMS4yMzAgZ2RidHlwZXMu YwotLS0gZ2RidHlwZXMuYwkyMyBNYXkgMjAxMiAyMzo0NTowOSAtMDAwMAkx LjIzMAorKysgZ2RidHlwZXMuYwkxIEp1biAyMDEyIDE5OjAwOjMyIC0wMDAw CkBAIC0xOTg3LDcgKzE5ODcsNyBAQCBpc19pbnRlZ3JhbF90eXBlIChzdHJ1 Y3QgdHlwZSAqdCkKIAogLyogUmV0dXJuIHRydWUgaWYgVFlQRSBpcyBzY2Fs YXIuICAqLwogCi1zdGF0aWMgaW50CitpbnQKIGlzX3NjYWxhcl90eXBlIChz dHJ1Y3QgdHlwZSAqdHlwZSkKIHsKICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7 CkBAIC0yMDA2LDYgKzIwMDYsMjAgQEAgaXNfc2NhbGFyX3R5cGUgKHN0cnVj dCB0eXBlICp0eXBlKQogICAgIH0KIH0KIAoraW50Citpc19jb21wb3VuZF90 eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK3sKKyAgZW51bSB0eXBlX2NvZGUg dHlwZV9jb2RlOworCisgIENIRUNLX1RZUEVERUYgKHR5cGUpOworCisgIHR5 cGVfY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgIGlmICh0eXBlX2NvZGUg PT0gVFlQRV9DT0RFX1NUUlVDVCB8fCB0eXBlX2NvZGUgPT0gVFlQRV9DT0RF X1VOSU9OKQorICAgIHJldHVybiAxOworICBlbHNlCisgICAgcmV0dXJuIDA7 Cit9CisKIC8qIFJldHVybiB0cnVlIGlmIFQgaXMgc2NhbGFyLCBvciBhIGNv bXBvc2l0ZSB0eXBlIHdoaWNoIGluIHByYWN0aWNlIGhhcwogICAgdGhlIG1l bW9yeSBsYXlvdXQgb2YgYSBzY2FsYXIgdHlwZS4gIEUuZy4sIGFuIGFycmF5 IG9yIHN0cnVjdCB3aXRoIG9ubHkKICAgIG9uZSBzY2FsYXIgZWxlbWVudCBp bnNpZGUgaXQsIG9yIGEgdW5pb24gd2l0aCBvbmx5IHNjYWxhciBlbGVtZW50 cy4gICovCkluZGV4OiBnZGJ0eXBlcy5oCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2RidHlwZXMuaCx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xNjUKZGlmZiAtdSAtcCAtcjEuMTY1IGdk YnR5cGVzLmgKLS0tIGdkYnR5cGVzLmgJMTggQXByIDIwMTIgMDY6NDY6NDYg LTAwMDAJMS4xNjUKKysrIGdkYnR5cGVzLmgJMSBKdW4gMjAxMiAxOTowMDoz MyAtMDAwMApAQCAtMTYwMyw4ICsxNjAzLDEyIEBAIGV4dGVybiBpbnQgY2Fu X2RlcmVmZXJlbmNlIChzdHJ1Y3QgdHlwZSAKIAogZXh0ZXJuIGludCBpc19p bnRlZ3JhbF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKIAorZXh0ZXJuIGludCBp c19zY2FsYXJfdHlwZSAoc3RydWN0IHR5cGUgKik7CisKIGV4dGVybiBpbnQg aXNfc2NhbGFyX3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqKTsKIAor ZXh0ZXJuIGludCBpc19jb21wb3VuZF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsK KwogZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAq LCBpbnQpOwogCiBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3BpZWRfdHlwZXNf aGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwpJbmRleDogdmFsYXJp dGguYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Ny Yy9zcmMvZ2RiL3ZhbGFyaXRoLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MTAzCmRpZmYgLXUgLXAgLXIxLjEwMyB2YWxhcml0aC5jCi0tLSB2YWxhcml0 aC5jCTE4IE1heSAyMDEyIDIxOjAyOjUwIC0wMDAwCTEuMTAzCisrKyB2YWxh cml0aC5jCTEgSnVuIDIwMTIgMTk6MDA6MzMgLTAwMDAKQEAgLTM5Nyw3ICsz OTcsOCBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0 cnVjCiAgIC8qIG5vdyB3ZSBrbm93IHRoYXQgd2hhdCB3ZSBoYXZlIHRvIGRv IGlzIGNvbnN0cnVjdCBvdXIKICAgICAgYXJnIHZlY3RvciBhbmQgZmluZCB0 aGUgcmlnaHQgZnVuY3Rpb24gdG8gY2FsbCBpdCB3aXRoLiAgKi8KIAotICBp ZiAoVFlQRV9DT0RFIChjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcx KSkpICE9IFRZUEVfQ09ERV9TVFJVQ1QpCisgIGlmICghaXNfY29tcG91bmRf dHlwZSAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpKQorICAg ICAgJiYgIWlzX2NvbXBvdW5kX3R5cGUgKGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFyZzIpKSkpCiAgICAgZXJyb3IgKF8oIkNhbid0IGRvIHRoYXQg YmluYXJ5IG9wIG9uIHRoYXQgdHlwZSIpKTsJLyogRklYTUUgYmUgZXhwbGlj aXQgKi8KIAogICBhcmd2ZWMgPSAoc3RydWN0IHZhbHVlICoqKSBhbGxvY2Eg KHNpemVvZiAoc3RydWN0IHZhbHVlICopICogNCk7CkBAIC0xNDQ3LDI0ICsx NDQ4LDI3IEBAIHZhbHVlX2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0 cnVjdCAKICAgaW50IHQyX2lzX3ZlYyA9IChUWVBFX0NPREUgKHR5cGUyKSA9 PSBUWVBFX0NPREVfQVJSQVkKIAkJICAgJiYgVFlQRV9WRUNUT1IgKHR5cGUy KSk7CiAKLSAgaWYgKCF0MV9pc192ZWMgJiYgIXQyX2lzX3ZlYykKKyAgaWYg KGlzX3NjYWxhcl90eXBlICh0eXBlMSkgJiYgaXNfc2NhbGFyX3R5cGUgKHR5 cGUyKSkKICAgICB2YWwgPSBzY2FsYXJfYmlub3AgKGFyZzEsIGFyZzIsIG9w KTsKICAgZWxzZSBpZiAodDFfaXNfdmVjICYmIHQyX2lzX3ZlYykKICAgICB2 YWwgPSB2ZWN0b3JfYmlub3AgKGFyZzEsIGFyZzIsIG9wKTsKLSAgZWxzZQor ICBlbHNlIGlmICgoaXNfc2NhbGFyX3R5cGUgKHR5cGUxKSAmJiB0Ml9pc192 ZWMpCisgICAgICAgICAgIHx8IChpc19zY2FsYXJfdHlwZSAodHlwZTIpICYm IHQxX2lzX3ZlYykpCiAgICAgewogICAgICAgLyogV2lkZW4gdGhlIHNjYWxh ciBvcGVyYW5kIHRvIGEgdmVjdG9yLiAgKi8KICAgICAgIHN0cnVjdCB2YWx1 ZSAqKnYgPSB0MV9pc192ZWMgPyAmYXJnMiA6ICZhcmcxOwogICAgICAgc3Ry dWN0IHR5cGUgKnQgPSB0MV9pc192ZWMgPyB0eXBlMiA6IHR5cGUxOwotICAg ICAgCi0gICAgICBpZiAoVFlQRV9DT0RFICh0KSAhPSBUWVBFX0NPREVfRkxU Ci0JICAmJiBUWVBFX0NPREUgKHQpICE9IFRZUEVfQ09ERV9ERUNGTE9BVAot CSAgJiYgIWlzX2ludGVncmFsX3R5cGUgKHQpKQotCWVycm9yIChfKCJBcmd1 bWVudCB0byBvcGVyYXRpb24gbm90IGEgbnVtYmVyIG9yIGJvb2xlYW4uIikp OworCisgICAgICBpZiAoVFlQRV9DT0RFICh0KSA9PSBUWVBFX0NPREVfUFRS KQorCWVycm9yIChfKCJBcmd1bWVudCB0byBhcml0aG1ldGljIG9wZXJhdGlv biBub3Qgb2YgdmFsaWQgdHlwZS4iKSk7CiAKICAgICAgICp2ID0gdmFsdWVf Y2FzdCAodDFfaXNfdmVjID8gdHlwZTEgOiB0eXBlMiwgKnYpOwogICAgICAg dmFsID0gdmVjdG9yX2Jpbm9wIChhcmcxLCBhcmcyLCBvcCk7CiAgICAgfQor ICBlbHNlIGlmIChpc19jb21wb3VuZF90eXBlICh0eXBlMSkgfHwgaXNfY29t cG91bmRfdHlwZSAodHlwZTIpKQorICAgIHZhbCA9IHZhbHVlX3hfYmlub3Ag KGFyZzEsIGFyZzIsIG9wLCBPUF9OVUxMLCBFVkFMX05PUk1BTCk7CisgIGVs c2UKKyAgICBlcnJvciAoXygiQXJndW1lbnRzIHRvIGFyaXRobWV0aWMgb3Bl cmF0aW9uIG5vdCBvZiB2YWxpZCB0eXBlLiIpKTsKIAogICByZXR1cm4gdmFs OwogfQpJbmRleDogdmFsb3BzLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi92YWxvcHMuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4yOTQKZGlmZiAtdSAtcCAtcjEuMjk0IHZhbG9wcy5j Ci0tLSB2YWxvcHMuYwkyMSBNYXkgMjAxMiAxOTo0Nzo1MyAtMDAwMAkxLjI5 NAorKysgdmFsb3BzLmMJMSBKdW4gMjAxMiAxOTowMDozNSAtMDAwMApAQCAt MjU4OSw2ICsyNTg5LDcgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0 IHZhbHVlICoqYXJncwogCQkgICAgIHN0cnVjdCB2YWx1ZSAqKnZhbHAsIHN0 cnVjdCBzeW1ib2wgKipzeW1wLCAKIAkJICAgICBpbnQgKnN0YXRpY3AsIGNv bnN0IGludCBub19hZGwpCiB7CisgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4 Y2VwdDsKICAgc3RydWN0IHZhbHVlICpvYmogPSAob2JqcCA/ICpvYmpwIDog TlVMTCk7CiAgIHN0cnVjdCB0eXBlICpvYmpfdHlwZSA9IG9iaiA/IHZhbHVl X3R5cGUgKG9iaikgOiBOVUxMOwogICAvKiBJbmRleCBvZiBiZXN0IG92ZXJs b2FkZWQgZnVuY3Rpb24uICAqLwpAQCAtMjY0MiwxMCArMjY0MywxNiBAQCBm aW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzCiAJICAg IH0KIAl9CiAKLSAgICAgIC8qIFJldHJpZXZlIHRoZSBsaXN0IG9mIG1ldGhv ZHMgd2l0aCB0aGUgbmFtZSBOQU1FLiAgKi8KLSAgICAgIGZuc19wdHIgPSB2 YWx1ZV9maW5kX29sb2FkX21ldGhvZF9saXN0ICgmdGVtcCwgbmFtZSwgCi0J CQkJCSAgICAgIDAsICZudW1fZm5zLCAKLQkJCQkJICAgICAgJmJhc2V0eXBl LCAmYm9mZnNldCk7CisgICAgICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJO X01BU0tfRVJST1IpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBSZXRyaWV2 ZSB0aGUgbGlzdCBvZiBtZXRob2RzIHdpdGggdGhlIG5hbWUgTkFNRS4gICov CisgICAgICAgICAgZm5zX3B0ciA9IHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9k X2xpc3QgKCZ0ZW1wLCBuYW1lLCAKKwkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwLCAmbnVtX2ZucywgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiYXNl dHlwZSwgJmJvZmZzZXQpOworICAgICAgICB9CisgICAgICBpZiAoZXhjZXB0 LnJlYXNvbiA8IDApCisgICAgICAgIGZuc19wdHIgPSBOVUxMOworCiAgICAg ICAvKiBJZiB0aGlzIGlzIGEgbWV0aG9kIG9ubHkgc2VhcmNoLCBhbmQgbm8g bWV0aG9kcyB3ZXJlIGZvdW5kCiAgICAgICAgICB0aGUgc2VhcmNoIGhhcyBm YWlsZC4gICovCiAgICAgICBpZiAobWV0aG9kID09IE1FVEhPRCAmJiAoIWZu c19wdHIgfHwgIW51bV9mbnMpKQpJbmRleDogdGVzdHN1aXRlL2dkYi5jcC9v cGVyYXRvci5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL3NyYy9zcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3BlcmF0b3IuY2Ms dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC11IC1wIC1yMS4yIG9w ZXJhdG9yLmNjCi0tLSB0ZXN0c3VpdGUvZ2RiLmNwL29wZXJhdG9yLmNjCTI1 IEp1biAyMDEwIDE4OjA1OjMwIC0wMDAwCTEuMgorKysgdGVzdHN1aXRlL2dk Yi5jcC9vcGVyYXRvci5jYwkxIEp1biAyMDEyIDE5OjAwOjM2IC0wMDAwCkBA IC0xLDcgKzEsMjYgQEAKIGNsYXNzIEEKIHsKKyBwdWJsaWM6CisgIGludCBh OworCisgIEEgb3BlcmF0b3IrIChjb25zdCBBICZvcHIyKTsKIH07CiAKK0EK K0E6Om9wZXJhdG9yKyAoY29uc3QgQSAmb3ByMikKK3sKKyAgQSBuZXdfYTsK KyAgbmV3X2EuYSA9IGEgKyBvcHIyLmE7CisKKyAgcmV0dXJuIG5ld19hOwor fQorCitpbnQKK29wZXJhdG9yKyAoY29uc3QgaW50IG9wcjEsIGNvbnN0IEEg Jm9wcjIpCit7CisgIHJldHVybiBvcHIxICsgb3ByMi5hOworfQorCiBpbnQg b3BlcmF0b3I9PSAoQSwgaW50KQogewogICByZXR1cm4gMTE7CkBAIC0xNzYs NiArMTk1LDcgQEAgdGVzdCB4OwogaW50IG1haW4gKCkKIHsKICAgQSBhOwor CiAgIGEgPT0gMTsKICAgYSA9PSAnYSc7CiAKQEAgLTIwNyw1ICsyMjcsOSBA QCBpbnQgbWFpbiAoKQogICBMIGw7CiAgIGwgPT0gMTsKIAotICByZXR1cm4g MDsKKyAgQSBvYmoxID0geyAxMCB9OworICBBIG9iajIgPSB7IDIwIH07Cisg IGludCB2YWwgPSAxOworCisgIHJldHVybiAwOyAvKiBCcmVhayBoZXJlLiAg Ki8KIH0KSW5kZXg6IHRlc3RzdWl0ZS9nZGIuY3Avb3BlcmF0b3IuZXhwCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9vcGVyYXRvci5leHAsdgpyZXRyaWV2aW5n IHJldmlzaW9uIDEuNApkaWZmIC11IC1wIC1yMS40IG9wZXJhdG9yLmV4cAot LS0gdGVzdHN1aXRlL2dkYi5jcC9vcGVyYXRvci5leHAJNCBKYW4gMjAxMiAw ODoxNzo0NyAtMDAwMAkxLjQKKysrIHRlc3RzdWl0ZS9nZGIuY3Avb3BlcmF0 b3IuZXhwCTEgSnVuIDIwMTIgMTk6MDA6MzYgLTAwMDAKQEAgLTI2LDYgKzI2 LDkgQEAgaWYgIVtydW50b19tYWluXSB0aGVuIHsKICAgICBjb250aW51ZQog fQogCitnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQnJl YWsgaGVyZS4iXQorZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkJyZWFr IGhlcmUiICIuKkJyZWFrIGhlcmUuKiIKKwogIyBUZXN0IGdsb2JhbCBvcGVy YXRvcgogZ2RiX3Rlc3QgInAgYSA9PSAxIiAiPSAxMSIgImdsb2JhbCBvcGVy YXRvciIKIGdkYl90ZXN0ICJwIGEgPT0gJ2EnIiAiPSAxMiIgImdsb2JhbCBv cGVyYXRvciBvdmVybG9hZCIKQEAgLTU5LDMgKzYyLDcgQEAgZ2RiX3Rlc3Qg InAgbCA9PSAxIiAiPSA4OCIKIAogIyBUZXN0IHRoYXQgd2UgZG9uJ3QgZmFs bCBpbnRvIGFuIGltcG9ydCBsb29wCiBnZGJfdGVzdCB7cCB4WzBdfSB7Tm8g c3ltYm9sICJvcGVyYXRvclxbXF0iIGluIGN1cnJlbnQgY29udGV4dC59CisK KyMgVGVzdCArIG9wZXJhdG9ycworZ2RiX3Rlc3QgInByaW50IHZhbCArIG9i ajEiICIxMSIgIlRlc3Qgb3ZlcmxvYWRlZCBvcGVyYXRvciBmdW5jdGlvbiIK K2dkYl90ZXN0ICJwcmludCAob2JqMSArIG9iajIpLmEiICIzMCIgIlRlc3Qg b3ZlcmxvYWRlZCBvcGVyYXRvciBtZXRob2QiCkluZGV4OiB0ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS12YWx1ZS1jYy5leHAKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS12YWx1ZS1jYy5leHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMQpkaWZmIC11IC1wIC1yMS4xIHB5LXZhbHVlLWNjLmV4cAotLS0gdGVz dHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUtY2MuZXhwCTIyIE1hciAyMDEy IDA4OjEwOjQ0IC0wMDAwCTEuMQorKysgdGVzdHN1aXRlL2dkYi5weXRob24v cHktdmFsdWUtY2MuZXhwCTEgSnVuIDIwMTIgMTk6MDA6MzcgLTAwMDAKQEAg LTM2LDYgKzM2LDEyIEBAIGlmICFbcnVudG9fbWFpbl0gewogZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJyZWFrIGhlcmUuIl0KIGdk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJCcmVhayBoZXJlIiAiLipCcmVh ayBoZXJlLioiCiAKK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiB2 YWwgPSBnZGIucGFyc2VfYW5kX2V2YWwoJ3ZhbCcpIiAiQ3JlYXRlIGFuIGlu dGVnZXIgdmFsdWUiIDAKK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhv biBhID0gZ2RiLnBhcnNlX2FuZF9ldmFsKCdhJykiICJDcmVhdGUgYSB2YWx1 ZSBmb3IgJ2EnIiAwCitnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24g bG9jYWxfYSA9IGdkYi5wYXJzZV9hbmRfZXZhbCgnbG9jYWxfYScpIiAiQ3Jl YXRlIGEgdmFsdWUgZm9yICdsb2NhbF9hJyIgMAorZ2RiX3B5X3Rlc3Rfc2ls ZW50X2NtZCAicHl0aG9uIG5ldzEgPSB2YWwgKyBsb2NhbF9hIiAiRXhjZXJj aXNlIG9wZXJhdG9yKyhpbnQsIEEpIiAwCitnZGJfcHlfdGVzdF9zaWxlbnRf Y21kICJweXRob24gbmV3MiA9IGEgKyBsb2NhbF9hIiAiRXhjZXJjaXNlIEE6 Om9wZXJhdG9yKyhBKSIgMAorCiBnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0 cihnZGIucGFyc2VfYW5kX2V2YWwoXCJhXCIpLnR5cGUpIiAiY29uc3QgQSAm IgogZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBzdHIoZ2RiLnBhcnNlX2FuZF9l dmFsKFwiYVwiKS5yZWZlcmVuY2VkX3ZhbHVlKCkudHlwZSkiICJjb25zdCBB IgogZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBzdHIoZ2RiLnBhcnNlX2FuZF9l dmFsKFwiaW50X3JlZlwiKS50eXBlKSIgImludCAmIgpAQCAtNDYsMyArNTIs NiBAQCBnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0cihnZGIucGFyc2VfYW5k CiBnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0cihnZGIucGFyc2VfYW5kX2V2 YWwoXCJpbnRfcHRyX3JlZlwiKS5yZWZlcmVuY2VkX3ZhbHVlKCkudHlwZSki ICJpbnRfcHRyIgogZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBzdHIoZ2RiLnBh cnNlX2FuZF9ldmFsKFwiaW50X3B0cl9yZWZcIikucmVmZXJlbmNlZF92YWx1 ZSgpLmRlcmVmZXJlbmNlKCkpIiAiMTAiCiBnZGJfdGVzdCAicHl0aG9uIHBy aW50IHN0cihnZGIucGFyc2VfYW5kX2V2YWwoXCJpbnRfcHRyX3JlZlwiKS5y ZWZlcmVuY2VkX3ZhbHVlKCkucmVmZXJlbmNlZF92YWx1ZSgpKSIgIjEwIgor CitnZGJfdGVzdCAicHl0aG9uIHByaW50IG5ldzEiICIyMCIgIlRlc3Qgb3Zl cmxvYWRlZCBvcGVyYXRvciBmdW5jdGlvbiIKK2dkYl90ZXN0ICJweXRob24g cHJpbnQgbmV3MlxbJ2EnXF0iICIyMCIgIlRlc3Qgb3Zlcmxhb2RlZCBvcGVy YXRvciBtZXRob2QiCkluZGV4OiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12 YWx1ZS5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmNj LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcCAtcjEuMSBw eS12YWx1ZS5jYwotLS0gdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUu Y2MJMjIgTWFyIDIwMTIgMDg6MTA6NDQgLTAwMDAJMS4xCisrKyB0ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5jYwkxIEp1biAyMDEyIDE5OjAwOjM3 IC0wMDAwCkBAIC0xNSwxNCArMTUsMzUgQEAKICAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCiAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKLWNs YXNzIEEgeworY2xhc3MgQQoreworIHB1YmxpYzoKKyAgaW50IGE7CisKKyAg QSBvcGVyYXRvcisgKGNvbnN0IEEgJm9wcjIpOwogfTsKIAorQQorQTo6b3Bl cmF0b3IrIChjb25zdCBBICZvcHIyKQoreworICBBIG5ld19hOworICBuZXdf YS5hID0gYSArIG9wcjIuYTsKKworICByZXR1cm4gbmV3X2E7Cit9CisKK2lu dAorb3BlcmF0b3IrIChjb25zdCBpbnQgb3ByMSwgY29uc3QgQSAmb3ByMikK K3sKKyAgcmV0dXJuIG9wcjEgKyBvcHIyLmE7Cit9CisKIHR5cGVkZWYgaW50 ICppbnRfcHRyOwogCiBpbnQKIGZ1bmMgKGNvbnN0IEEgJmEpCiB7CisgIEEg bG9jYWxfYSA9IHsgMTAgfTsKICAgaW50IHZhbCA9IDEwOwogICBpbnQgJmlu dF9yZWYgPSB2YWw7CiAgIGludF9wdHIgcHRyID0gJnZhbDsKQEAgLTM0LDYg KzU1LDcgQEAgZnVuYyAoY29uc3QgQSAmYSkKIGludAogbWFpbiAoKQogewot ICBBIG9iajsKKyAgQSBvYmogPSB7IDEwIH07CisKICAgcmV0dXJuIGZ1bmMg KG9iaik7CiB9CkluZGV4OiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1 ZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjcKZGlmZiAtdSAtcCAtcjEuMjcg cHktdmFsdWUuZXhwCi0tLSB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1 ZS5leHAJMTYgSmFuIDIwMTIgMTY6MjE6NTIgLTAwMDAJMS4yNworKysgdGVz dHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCTEgSnVuIDIwMTIgMTk6 MDA6MzcgLTAwMDAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcm9jIHRlc3RfdmFs dWVfbnVtZXJpY19vcHMge30gewogICAjIFRlc3Qgc29tZSBpbnZhbGlkIG9w ZXJhdGlvbnMuCiAKICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhvbiBwcmlu dCAncmVzdWx0ID0gJyArIHN0cihpKydmb28nKSIgImNhdGNoIGVycm9yIGlu IHB5dGhvbiB0eXBlIGNvbnZlcnNpb24iIHsKLSAgICAgIC1yZSAiQXJndW1l bnQgdG8gYXJpdGhtZXRpYyBvcGVyYXRpb24gbm90IGEgbnVtYmVyIG9yIGJv b2xlYW4uKiRnZGJfcHJvbXB0ICQiICAge3Bhc3MgImNhdGNoIGVycm9yIGlu IHB5dGhvbiB0eXBlIGNvbnZlcnNpb24ifQorICAgICAgLXJlICJBcmd1bWVu dHMgdG8gYXJpdGhtZXRpYyBvcGVyYXRpb24gbm90IG9mIHZhbGlkIHR5cGUu KiRnZGJfcHJvbXB0ICQiICAge3Bhc3MgImNhdGNoIGVycm9yIGluIHB5dGhv biB0eXBlIGNvbnZlcnNpb24ifQogICAgICAgLXJlICJyZXN1bHQgPSAuKiRn ZGJfcHJvbXB0ICQiCQkgICAgICB7ZmFpbCAiY2F0Y2ggZXJyb3IgaW4gcHl0 aG9uIHR5cGUgY29udmVyc2lvbiJ9CiAgICAgICAtcmUgIiRnZGJfcHJvbXB0 ICQiCQkJICAgICAge2ZhaWwgImNhdGNoIGVycm9yIGluIHB5dGhvbiB0eXBl IGNvbnZlcnNpb24ifQogICB9Cg== --20cf300fb33f27f8eb04c16e8586--