From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18015 invoked by alias); 13 Mar 2012 11:54:12 -0000 Received: (qmail 18002 invoked by uid 22791); 13 Mar 2012 11:54:10 -0000 X-SWARE-Spam-Status: No, hits=0.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_STOCKTIP,RCVD_IN_DNSWL_LOW,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-yx0-f169.google.com (HELO mail-yx0-f169.google.com) (209.85.213.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 13 Mar 2012 11:53:55 +0000 Received: by yenm8 with SMTP id m8so538828yen.0 for ; Tue, 13 Mar 2012 04:53:54 -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=eFH47jYm9DJTMldbsQpHOPSvvBfdDzdSO/cc4+ZeFqY=; b=hUdeYzf/lhPWKMQgcN5Uf6skfkGRIQNG3bKrQDrxzE+TaZhBApAvpZIci93YQ+Rt64 l1ObTBxnMysVgh5vXIZ13OhzyF8wvfd+8+cZfL/xztH18jbId8d9b9tczUYuVSBcjHot NTqaoTXwjZcEGSxf5Sdp7hmBZuHNo6PWPc43WJSV+X9Ct2uHE5E/T57c2ph7MAIg5/GM axgWvBYbnnZ//htgaCU+sA1pkg4XOEz86FcMTHVW/J1vh4V2LS54IXsTSOGvXHo1/tIz yVQDGydFyN2I+WzXmIMXFypwodV0ytG+MmnidZ0pgxR21cTd/TwLSE5bZAn65KhJoVal 3BDA== Received: by 10.229.136.19 with SMTP id p19mr3673012qct.133.1331639634604; Tue, 13 Mar 2012 04:53:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.136.19 with SMTP id p19mr3673007qct.133.1331639634456; Tue, 13 Mar 2012 04:53:54 -0700 (PDT) Received: by 10.224.182.136 with HTTP; Tue, 13 Mar 2012 04:53:54 -0700 (PDT) Date: Tue, 13 Mar 2012 11:54:00 -0000 Message-ID: Subject: [RFC - Python Scripting] New method Value.referenced_value to dereference pointer as well as reference values (with docs) From: Siva Chandra To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00248c7119d16172b704bb1e83a5 X-System-Of-Record: true X-Gm-Message-State: ALoCoQnOOx7yws9jF8YzsXSCk6dIZVY9QrYETHg+ZmqgC63LJfgqaapQmyps7w2eot2bAW01KZ/60RT4T02kmzmGaXwRiYhaD0Dcxca6hh11IQHbzxvSqCOvG7jzb/Qsb5owW749MuflU3p03OIJs0T8AggieyfXWg== 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-03/txt/msg00430.txt.bz2 --00248c7119d16172b704bb1e83a5 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2056 Hi all, Per Tom's suggestion in another thread (see for reference http://sourceware.org/ml/gdb-patches/2012-03/msg00417.html), I have added a new method to gdb.Value. I am starting a new mail thread as the subject line, and the patch, have changed quite a bit from last time. I could not think of a better name than 'referenced_value' for this method. Hence, I have implemented it to deference pointer as well as reference values as the name of the method suggests. I have tried to document the similarities (and differences) between this new method and the method Value.dereference wherever reasonable. I have used Tom's example of a reference to a pointer to describe the differences. About using prepare_for_testing, I notice that compilation fails with this as gcc is being used to compile the test case and not g++. So, I have not changed the exp file in this patch. Code Changelog: 2012-03-13 Siva Chandra Python scripting: Add new method Value.referenced_value to gdb.Value which can dereference pointer as well as reference values. * NEWS: Add entry under 'Python scripting' about the new method Value.referenced_value on gdb.Value objects. * python/py-value.c (valpy_referenced_value): New function defining a new method on gdb.Value objects which can dereference pointer and reference values. * testsuite/gdb.python/py-value.cc: Add test case for testing the methodology exposing C++ values to Python. * testsuite/gdb.python/py-value-cc.exp: Add tests testing the methodology exposing C++ values to Python. * testsuite/gdb.python/Makefile.in: Add py-value-cc to EXECUTABLES. Docs Changelog: 2012-03-13 Siva Chandra * gdb.texinfo (Python API/Values From Inferior): Add description about the new method Value.referenced_value. Add description on how Value.dereference is different (and similar) to Value.referenced_value. Thanks, Siva Chandra --00248c7119d16172b704bb1e83a5 Content-Type: text/plain; charset=US-ASCII; name="value_referenced_value_patch_v1.txt" Content-Disposition: attachment; filename="value_referenced_value_patch_v1.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gzqvufmi0 Content-length: 14665 ZGlmZiAtcnVwTiBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbyBzcmNfcmVmL2dk Yi9kb2MvZ2RiLnRleGluZm8KLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTItMDMtMDggMDA6NTU6MzcuMDAwMDAwMDAwICswNTMwCisrKyBzcmNf cmVmL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wMy0xMyAxNjo0NzoxMS4w NzgxNTgzMTcgKzA1MzAKQEAgLTIyMTM3LDYgKzIyMTM3LDc3IEBAIGJhciA9 IGZvby5kZXJlZmVyZW5jZSAoKQogCiBUaGUgcmVzdWx0IEBjb2Rle2Jhcn0g d2lsbCBiZSBhIEBjb2Rle2dkYi5WYWx1ZX0gb2JqZWN0IGhvbGRpbmcgdGhl CiB2YWx1ZSBwb2ludGVkIHRvIGJ5IEBjb2Rle2Zvb30uCisKK0Egc2ltaWxh ciBmdW5jdGlvbiBAY29kZXtWYWx1ZS5yZWZlcmVuY2VkX3ZhbHVlfSBleGlz dHMgd2hpY2ggYWxzbworcmV0dXJucyBAY29kZXtnZGIuVmFsdWV9IG9iamVj dHMgY29ycmVzb25kaW5nIHRvIHRoZSB2YWx1ZXMgcG9pbnRlZCB0bworYnkg cG9pbnRlciB2YWx1ZXMgKGFuZCBhZGRpdGlvbmFsbHksIHZhbHVlcyByZWZl cmVuY2VkIGJ5IHJlZmVyZW5jZQordmFsdWVzKS4gIEhvd2V2ZXIsIHRoZSBi ZWhhdmlvdXIgb2YgQGNvZGV7VmFsdWUuZGVyZWZlcmVuY2V9CitkaWZmZXJz IHdpdGggQGNvZGV7VmFsdWUucmVmZXJlbmNlZF92YWx1ZX0gYnkgdGhlIGZh Y3QgdGhhdCB0aGUKK2JlaGF2aW91ciBvZiBAY29kZXtWYWx1ZS5kZXJlZmVy ZW5jZX0gaXMgaWRlbnRpY2FsIHRvIGFwcGx5aW5nIHRoZSBDCit1bmFyeSBA Y29kZXsqfSBvcGVyYXRvciBvbiBhIGdpdmVuIHZhbHVlLiAgRm9yIGV4YW1w bGUsIGNvbnNpZGVyIGEKK3JlZmVyZW5jZSB0byBhIHBvaW50ZXIgQGNvZGV7 cHRycmVmfSwgZGVjbGFyZWQgaW4geW91ciBDKysgcHJvZ3JhbSBhcworCitA c21hbGxleGFtcGxlCit0eXBlZGVmIGludCAqaW50cHRyOworLi4uCitpbnQg dmFsID0gMTA7CitpbnRwdHIgcHRyID0gJnZhbDsKK2ludHB0ciAmcHRycmVm ID0gcHRyOworQGVuZCBzbWFsbGV4YW1wbGUKKworVGhvdWdoIEBjb2Rle3B0 cnJlZn0gaXMgYSByZWZlcmVuY2UgdmFsdWUsIG9uZSBjYW4gYXBwbHkgdGhl IG1ldGhvZAorQGNvZGV7VmFsdWUuZGVyZWZlcmVuY2V9IG9uIHRoZSBAY29k ZXtnZGIuVmFsdWV9IG9iamVjdCBjb3JyZXNwb25kaW5nCit0byBpdCBhbmQg b2J0YWluIGEgQGNvZGV7Z2RiLlZhbHVlfSB3aGljaCBpcyBpZGVudGljYWwg dG8gdGhhdAorY29ycmVzcG9uZGluZyB0byBAY29kZXt2YWx9LiAgSG93ZXZl ciwgaWYgeW91IGFwcGx5IHRoZSBtZXRob2QKK0Bjb2Rle1ZhbHVlLnJlZmVy ZW5jZWRfdmFsdWV9LCB0aGUgcmVzdWx0IHdvdWxkIGJlIGEgQGNvZGV7Z2Ri LlZhbHVlfQorb2JqZWN0IGlkZW50aWNhbCB0byB0aGF0IGNvcnJlc3BvbmRp bmcgdG8gQGNvZGV7cHRyfS4KKworQHNtYWxsZXhhbXBsZQorcHlfcHRycmVm ID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgicHRycmVmIikKK3B5X3ZhbCA9IHB5 X3B0cnJlZi5kZXJlZmVyZW5jZSAoKQorcHlfcHRyID0gcHlfcHRycmVmLnJl ZmVyZW5jZWRfdmFsdWUgKCkKK0BlbmQgc21hbGxleGFtcGxlCisKK1RoZSBA Y29kZXtnZGIuVmFsdWV9IG9iamVjdCBAY29kZXtweV92YWx9IGlzIGlkZW50 aWNhbCB0byB0aGF0Citjb3JyZXNwb25kaW5nIHRvIEBjb2Rle3ZhbH0sIGFu ZCBAY29kZXtweV9wdHJ9IGlzIGlkZW50aWNhbCB0byB0aGF0Citjb3JyZXNw b25kaW5nIHRvIEBjb2Rle3B0cn0uICBJbiBnZW5lcmFsLCBAY29kZXtWYWx1 ZS5kZXJlZmVyZW5jZX0gY2FuCitiZSBhcHBsaWVkIHdoZW5ldmVyIHRoZSBD IHVuYXJ5IEBjb2Rleyp9IG9wZXJhdG9yIGNhbiBiZSBsZWdhbGx5IGFwcGxp ZWQKK3RvIHRoZSBjb3JyZXNwb25kaW5nIEMgdmFsdWUuICBGb3IgdGhvc2Ug Y2FzZXMgd2hlcmUgYXBwbHlpbmcgYm90aAorQGNvZGV7VmFsdWUuZGVyZWZl cmVuY2V9IGFuZCBAY29kZXtWYWx1ZS5yZWZlcmVuY2VkX3ZhbHVlfSBpcyBs ZWdhbCwgdGhlCityZXN1bHRzIG9idGFpbmVkIG5lZWQgbm90IGJlIGlkZW50 aWNhbCAoYXMgd2UgaGF2ZSBzZWVuIGluIHRoZSBhYm92ZQorZXhhbXBsZSku ICBUaGUgcmVzdWx0cyBhcmUgaG93ZXZlciBpZGVudGljYWwgd2hlbiBhcHBs aWVkIG9uCitAY29kZXtnZGIuVmFsdWV9IG9iamVjdHMgY29ycmVzcG9uZGlu ZyB0byBwb2ludGVycyAoQGNvZGV7Z2RiLlZhbHVlfQorb2JqZWN0cyB3aXRo IHR5cGUgY29kZSBAY29kZXtUWVBFX0NPREVfUFRSfSkgaW4gYSBDL0MrKyBw cm9ncmFtLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gVmFsdWUucmVmZXJlbmNl ZF92YWx1ZSAoKQorRm9yIHBvaW50ZXIgb3IgcmVmZXJlbmNlIGRhdGEgdHlw ZXMsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcKK0Bjb2Rle2dkYi5WYWx1 ZX0gb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIHJlZmVyZW5j ZWQgYnkgdGhlCitwb2ludGVyL3JlZmVyZW5jZSB2YWx1ZS4gIEZvciBwb2lu dGVyIGRhdGEgdHlwZXMsCitAY29kZXtWYWx1ZS5kZXJlZmVyZW5jZX0gYW5k IEBjb2Rle1ZhbHVlLnJlZmVyZW5jZWRfdmFsdWV9IHByb2R1Y2UKK2lkZW50 aWNhbCByZXN1bHRzLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSBt ZXRob2RzIGlzIHRoYXQKK0Bjb2Rle1ZhbHVlLmRlcmVmZXJlbmNlfSBjYW5u b3QgZ2V0IHRoZSB2YWx1ZXMgcmVmZXJlbmNlZCBieSByZWZlcmVuY2UKK3Zh bHVlcy4gIEZvciBleGFtcGxlLCBjb25zaWRlciBhIHJlZmVyZW5jZSB0byBh biBAY29kZXtpbnR9LCBkZWNsYXJlZAoraW4geW91ciBDKysgcHJvZ3JhbSBh cworCitAc21hbGxleGFtcGxlCitpbnQgdmFsID0gMTA7CitpbnQgJnJlZiA9 IHZhbDsKK0BlbmQgc21hbGxleGFtcGxlCisKK3RoZW4gYXBwbHlpbmcgQGNv ZGV7VmFsdWUuZGVyZWZlcmVuY2V9IG9uIHRoZSBAY29kZXtnZGIuVmFsdWV9 IG9iamVjdAorY29ycmVzcG9uZGluZyB0byBAY29kZXtyZWZ9IHdpbGwgcmVz dWx0IGluIGFuIGVycm9yLCB3aGlsZSBhcHBseWluZworQGNvZGV7VmFsdWUu cmVmZXJlbmNlZF92YWx1ZX0gd2lsbCByZXN1bHQgaW4gYSBAY29kZXtnZGIu VmFsdWV9IG9iamVjdAoraWRlbnRpY2FsIHRvIHRoYXQgY29ycmVzcG9uZGlu ZyB0byBAY29kZXt2YWx9LgorCitAc21hbGxleGFtcGxlCitweV9yZWYgPSBn ZGIucGFyc2VfYW5kX2V2YWwgKCJyZWYiKQorZXJfcmVmID0gcHlfcmVmLmRl cmVmZXJlbmNlICgpICAgICAgICMgUmVzdWx0cyBpbiBlcnJvcgorcHlfdmFs ID0gcHlfcmVmLnJlZmVyZW5jZWRfdmFsdWUgKCkgICMgUmV0dXJucyB0aGUg cmVmZXJlbmNlZCB2YWx1ZQorQGVuZCBzbWFsbGV4YW1wbGUKKworVGhlIEBj b2Rle2dkYi5WYWx1ZX0gb2JqZWN0IEBjb2Rle3B5X3ZhbH0gaXMgaWRlbnRp Y2FsIHRvIHRoYXQKK2NvcnJlc3BvbmRpbmcgdG8gQGNvZGV7dmFsfS4KIEBl bmQgZGVmdW4KIAogQGRlZnVuIFZhbHVlLmR5bmFtaWNfY2FzdCAodHlwZSkK ZGlmZiAtcnVwTiBzcmMvZ2RiL05FV1Mgc3JjX3JlZi9nZGIvTkVXUwotLS0g c3JjL2dkYi9ORVdTCTIwMTItMDMtMDggMDA6NTU6MzYuMDAwMDAwMDAwICsw NTMwCisrKyBzcmNfcmVmL2dkYi9ORVdTCTIwMTItMDMtMTMgMTY6NTc6NTMu Mjc4MTU4NDU1ICswNTMwCkBAIC0yMyw2ICsyMyw5IEBACiAgICAgIGZyYW1l IGluIG9yZGVyIHRvIGNvbXB1dGUgaXRzIHZhbHVlLCBhbmQgdGhlIGxhdHRl ciBjb21wdXRlcyB0aGUKICAgICAgc3ltYm9sJ3MgdmFsdWUuCiAKKyAgKiog QSBuZXcgbWV0aG9kICdyZWZlcmVuY2VkX3ZhbHVlJyBvbiBnZGIuVmFsdWUg b2JqZWN0cyB3aGljaCBjYW4KKyAgICAgZGVyZWZlcmVuY2UgcG9pbnRlciBh cyB3ZWxsIGFzIEMrKyByZWZlcmVuY2UgdmFsdWVzLgorCiAqIEdEQnNlcnZl ciBub3cgc3VwcG9ydHMgc3RkaW8gY29ubmVjdGlvbnMuCiAgIEUuZy4gKGdk YikgdGFyZ2V0IHJlbW90ZSB8IHNzaCBteWhvc3QgZ2Ric2VydmVyIC0gaGVs bG8KIApkaWZmIC1ydXBOIHNyYy9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgc3Jj X3JlZi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLS0tIHNyYy9nZGIvcHl0aG9u L3B5LXZhbHVlLmMJMjAxMi0wMy0wMiAwMjozNjo1NC4wMDAwMDAwMDAgKzA1 MzAKKysrIHNyY19yZWYvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCTIwMTItMDMt MTMgMTY6NDY6MDcuNzA4MTYwNTU4ICswNTMwCkBAIC0xOTIsNiArMTkyLDQ3 IEBAIHZhbHB5X2RlcmVmZXJlbmNlIChQeU9iamVjdCAqc2VsZiwgUHlPYmoK ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogR2l2ZW4gYSB2YWx1ZSBvZiBh IHBvaW50ZXIgdHlwZSBvciBhIHJlZmVyZW5jZSB0eXBlLCByZXR1cm4gdGhl IHZhbHVlCisgICByZWZlcmVuY2VkLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVu IHRoaXMgZnVuY3Rpb24gYW5kIHZhbHB5X2RlcmVmZXJlbmNlIGlzCisgICB0 aGF0IHRoZSBsYXR0ZXIgYXBwbGllcyAqIHVuYXJ5IG9wZXJhdG9yIHRvIGEg dmFsdWUsIHdoaWNoIG5lZWQgbm90IGFsd2F5cworICAgcmVzdWx0IGluIHRo ZSB2YWx1ZSByZWZlcmVuY2VkLiBGb3IgZXhhbXBsZSwgZm9yIGEgdmFsdWUg d2hpY2ggaXMgYSByZWZlcmVuY2UKKyAgIHRvIGFuICdpbnQnIHBvaW50ZXIg KCdpbnQgKicpLCB2YWxweV9kZXJlZmVyZW5jZSB3aWxsIHJlc3VsdCBpbiBh IHZhbHVlIG9mCisgICB0eXBlICdpbnQnIHdoaWxlIHZhbHB5X3JlZmVyZW5j ZWRfdmFsdWUgd2lsbCByZXN1bHQgaW4gYSB2YWx1ZSBvZiB0eXBlCisgICAn aW50IConLiAgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3ZhbHB5X3JlZmVy ZW5jZWRfdmFsdWUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykK K3sKKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0Owor ICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICBUUllfQ0FUQ0ggKGV4 Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQorICAgIHsKKyAgICAgIHN0cnVjdCB2 YWx1ZSAqc2VsZl92YWwsICpyZXNfdmFsOworICAgICAgc3RydWN0IGNsZWFu dXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXBfdmFsdWVfZnJlZV90b19tYXJr ICh2YWx1ZV9tYXJrICgpKTsKKworICAgICAgc2VsZl92YWwgPSAoKHZhbHVl X29iamVjdCAqKSBzZWxmKS0+dmFsdWU7CisgICAgICBzd2l0Y2ggKFRZUEVf Q09ERSAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoc2VsZl92YWwpKSkp CisgICAgICAgIHsKKyAgICAgICAgY2FzZSBUWVBFX0NPREVfUFRSOgorICAg ICAgICAgIHJlc192YWwgPSB2YWx1ZV9pbmQgKHNlbGZfdmFsKTsKKyAgICAg ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUWVBFX0NPREVfUkVGOgorICAg ICAgICAgIHJlc192YWwgPSBjb2VyY2VfcmVmIChzZWxmX3ZhbCk7CisgICAg ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZXJy b3IoXygiVHJ5aW5nIHRvIGdldCB0aGUgcmVmZXJlbmNlZCB2YWx1ZSBmcm9t IGEgdmFsdWUgd2hpY2ggaXMgIgorICAgICAgICAgICAgICAgICAgIm5laXRo ZXIgYSBwb2ludGVyIG5vciBhIHJlZmVyZW5jZS4iKSk7CisgICAgICAgIH0K KworICAgICAgcmVzdWx0ID0gdmFsdWVfdG9fdmFsdWVfb2JqZWN0IChyZXNf dmFsKTsKKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAgICB9Cisg IEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOworCisgIHJldHVy biByZXN1bHQ7Cit9CisKIC8qIFJldHVybiAiJnZhbHVlIi4gICovCiBzdGF0 aWMgUHlPYmplY3QgKgogdmFscHlfZ2V0X2FkZHJlc3MgKFB5T2JqZWN0ICpz ZWxmLCB2b2lkICpjbG9zdXJlKQpAQCAtMTM3OSw2ICsxNDIwLDggQEAgQ2Fz dCB0aGUgdmFsdWUgdG8gdGhlIHN1cHBsaWVkIHR5cGUsIGFzIAogcmVpbnRl cnByZXRfY2FzdCBvcGVyYXRvci4iCiAgIH0sCiAgIHsgImRlcmVmZXJlbmNl IiwgdmFscHlfZGVyZWZlcmVuY2UsIE1FVEhfTk9BUkdTLCAiRGVyZWZlcmVu Y2VzIHRoZSB2YWx1ZS4iIH0sCisgIHsgInJlZmVyZW5jZWRfdmFsdWUiLCB2 YWxweV9yZWZlcmVuY2VkX3ZhbHVlLCBNRVRIX05PQVJHUywKKyAgICAiUmV0 dXJuIHRoZSB2YWx1ZSByZWZlcmVuY2VkIGJ5IGEgVFlQRV9DT0RFX1JFRiB2 YWx1ZS4iIH0sCiAgIHsgImxhenlfc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKSB2 YWxweV9sYXp5X3N0cmluZywKICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tF WVdPUkRTLAogICAgICJsYXp5X3N0cmluZyAoW2VuY29kaW5nXSAgWywgbGVu Z3RoXSkgLT4gbGF6eV9zdHJpbmdcblwKZGlmZiAtcnVwTiBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluIHNyY19yZWYvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCi0tLSBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCTIwMTEtMTItMjMgMjI6 MzY6MTYuMDAwMDAwMDAwICswNTMwCisrKyBzcmNfcmVmL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9NYWtlZmlsZS5pbgkyMDEyLTAzLTExIDAwOjQwOjM2 LjkwMjk1MzUyOSArMDUzMApAQCAtNSw3ICs1LDcgQEAgRVhFQ1VUQUJMRVMg PSBweS10eXBlIHB5LXZhbHVlIHB5LXByZXR0eQogCXB5LXN5bWJvbCBweS1t aSBweS1icmVha3BvaW50IHB5LWluZmVyaW9yIHB5LWluZnRocmVhZCBcCiAJ cHktc2hhcmVkIHB5dGhvbiBsaWItdHlwZXMgcHktZXZlbnRzIHB5LWV2dGhy ZWFkcyBweS1mcmFtZSBcCiAJcHktbWkgcHktcHAtbWFpbnQgcHktcHJvZ3Nw YWNlIHB5LXNlY3Rpb24tc2NyaXB0IHB5LW9iamZpbGUgXAotCXB5LWZpbmlz aC1icmVha3BvaW50IHB5LWZpbmlzaC1icmVha3BvaW50MgorCXB5LWZpbmlz aC1icmVha3BvaW50IHB5LWZpbmlzaC1icmVha3BvaW50MiBweS12YWx1ZS1j YwogCiBNSVNDRUxMQU5FT1VTID0gcHktc2hhcmVkLXNsLnNsIHB5LWV2ZW50 cy1zaGxpYi5zbyBweS1ldmVudHMtc2hsaWItbm9kZWJ1Zy5zbyAKIApkaWZm IC1ydXBOIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUu Y2Mgc3JjX3JlZi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUu Y2MKLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUu Y2MJMTk3MC0wMS0wMSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrIHNy Y19yZWYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmNjCTIw MTItMDMtMTMgMTI6MjQ6MjguODU4MTkwMzkyICswNTMwCkBAIC0wLDAgKzEs MzkgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworCitjbGFzcyBBIHsKK307CisKK3R5cGVkZWYgaW50ICppbnRfcHRy OworCitpbnQKK2Z1bmMgKGNvbnN0IEEgJmEpCit7CisgIGludCB2YWwgPSAx MDsKKyAgaW50ICZpbnRfcmVmID0gdmFsOworICBpbnRfcHRyIHB0ciA9ICZ2 YWw7CisgIGludF9wdHIgJmludF9wdHJfcmVmID0gcHRyOworCisgIHJldHVy biAwOyAvKiBCcmVhayBoZXJlLiAgKi8KK30KKworaW50CittYWluICgpCit7 CisgIEEgb2JqOworICByZXR1cm4gZnVuYyAob2JqKTsKK30KZGlmZiAtcnVw TiBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLWNjLmV4 cCBzcmNfcmVmL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS1j Yy5leHAKLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFs dWUtY2MuZXhwCTE5NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAwMDAwICswNTMw CisrKyBzcmNfcmVmL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1 ZS1jYy5leHAJMjAxMi0wMy0xMyAxMTowMDo1MC40NjgxNTg3MTQgKzA1MzAK QEAgLTAsMCArMSw1NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisK KyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdEQiB0ZXN0c3VpdGUuICBJ dCB0ZXN0cyB0aGUgbWVjaGFuaXNtCisjIGV4cG9zaW5nIHZhbHVlcyB0byBQ eXRob24uCisKK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51 ZSB9CisKK3NldCB0ZXN0ZmlsZSAicHktdmFsdWUiCitzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5jYworc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQoraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg XAorCSAge2RlYnVnIGMrK31dICE9ICIiIH0geworICAgIHVudGVzdGVkICJD b3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisgICAgcmV0dXJuIC0xCit9 CisKKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KKworZ2RiX2V4aXQKK2dk Yl9zdGFydAorZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly CisKKyMgU2tpcCBhbGwgdGVzdHMgaWYgUHl0aG9uIHNjcmlwdGluZyBpcyBu b3QgZW5hYmxlZC4KK2lmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29u dGludWUgfQorCitnZGJfbG9hZCAke2JpbmZpbGV9CisKK2lmICFbcnVudG9f bWFpbl0geworICAgcmV0dXJuIC0xCit9CisKK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJCcmVhayBoZXJlLiJdCitnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiQnJlYWsgaGVyZSIgIi4qQnJlYWsgaGVyZS4q IgorCitnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0cihnZGIucGFyc2VfYW5k X2V2YWwoXCJhXCIpLnR5cGUpIiAiY29uc3QgQSAmIgorZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCBzdHIoZ2RiLnBhcnNlX2FuZF9ldmFsKFwiYVwiKS5yZWZl cmVuY2VkX3ZhbHVlKCkudHlwZSkiICJjb25zdCBBIgorZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCBzdHIoZ2RiLnBhcnNlX2FuZF9ldmFsKFwiaW50X3JlZlwi KS50eXBlKSIgImludCAmIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBzdHIo Z2RiLnBhcnNlX2FuZF9ldmFsKFwiaW50X3JlZlwiKS5yZWZlcmVuY2VkX3Zh bHVlKCkudHlwZSkiICJpbnQiCitnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0 cihnZGIucGFyc2VfYW5kX2V2YWwoXCJpbnRfcmVmXCIpLnJlZmVyZW5jZWRf dmFsdWUoKSkiICIxMCIKKworZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBzdHIo Z2RiLnBhcnNlX2FuZF9ldmFsKFwiaW50X3B0cl9yZWZcIikuZGVyZWZlcmVu Y2UoKS50eXBlKSIgImludCIKK2dkYl90ZXN0ICJweXRob24gcHJpbnQgc3Ry KGdkYi5wYXJzZV9hbmRfZXZhbChcImludF9wdHJfcmVmXCIpLnJlZmVyZW5j ZWRfdmFsdWUoKS50eXBlKSIgImludF9wdHIiCitnZGJfdGVzdCAicHl0aG9u IHByaW50IHN0cihnZGIucGFyc2VfYW5kX2V2YWwoXCJpbnRfcHRyX3JlZlwi KS5yZWZlcmVuY2VkX3ZhbHVlKCkuZGVyZWZlcmVuY2UoKSkiICIxMCIKK2dk Yl90ZXN0ICJweXRob24gcHJpbnQgc3RyKGdkYi5wYXJzZV9hbmRfZXZhbChc ImludF9wdHJfcmVmXCIpLnJlZmVyZW5jZWRfdmFsdWUoKS5yZWZlcmVuY2Vk X3ZhbHVlKCkpIiAiMTAiCg== --00248c7119d16172b704bb1e83a5--