From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13455 invoked by alias); 14 Mar 2012 10:28:55 -0000 Received: (qmail 13440 invoked by uid 22791); 14 Mar 2012 10:28:53 -0000 X-SWARE-Spam-Status: No, hits=0.4 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-gy0-f169.google.com (HELO mail-gy0-f169.google.com) (209.85.160.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 14 Mar 2012 10:28:38 +0000 Received: by ghrr18 with SMTP id r18so1943086ghr.0 for ; Wed, 14 Mar 2012 03:28:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=NTizi6Q6c9lPVbWHaDjAVXqa11X+8oBCOZvgSqATtxY=; b=a/60j+wX0t7ap2r3mPCp7CbtNkw499CQrTIwTpGgfEfBSkmtxm9WmVuLgh6Ymzf6VN KHcw970gBCEJekNMQeng0FZgwEd/qhY8uPrAAvNWf4CCNfYCnwBASornri5i6eD/iLs9 3gBkb2YWJx4Njk1cJmJF/e/GE7QqaP+WjmZW/xzYTnbXPex38a5CzcewqB9cdzf+jYTn fvGOFiTCLplHVRqhaHP2hp6CFvjNooC+t/O+nyeEs+DHrF9+tqUVI2Jrak2opozQ1MiS +bt3CpykodjVVicfPetZGXnsfplR5Dl+r6+pVsf367SxRifr+trUsqvt3dEsMnH6o3Td oFwg== Received: by 10.224.186.145 with SMTP id cs17mr2342870qab.40.1331720918074; Wed, 14 Mar 2012 03:28:38 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.186.145 with SMTP id cs17mr2342858qab.40.1331720917972; Wed, 14 Mar 2012 03:28:37 -0700 (PDT) Received: by 10.224.182.136 with HTTP; Wed, 14 Mar 2012 03:28:37 -0700 (PDT) In-Reply-To: <83pqcgwc2w.fsf@gnu.org> References: <83pqcgwc2w.fsf@gnu.org> Date: Wed, 14 Mar 2012 10:28:00 -0000 Message-ID: Subject: Re: [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 Cc: Eli Zaretskii Content-Type: multipart/mixed; boundary=485b397dd4d941781704bb317062 X-System-Of-Record: true X-Gm-Message-State: ALoCoQmxAlx+nIGVanaO84n5iOSAnAlnpTcqs/4iBR96HZy72p5GL8TynmhmudFUasu9qiQcMMf4L+y85WJFOMJafVlKn/+p3cLDVsb6kQIWaljqj+a96Ac0iw8dyoUQ/Ylvd7T1iGv2Gu4K9+nRlVCWH01o2T2R3A== 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/msg00475.txt.bz2 --485b397dd4d941781704bb317062 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1337 I have modified according to Eli's suggestions. Thanks Eli, for the review. Attached is the patch with the modifications. Below are the Changelog entries. Code Changelog: 2012-03-14 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-14 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 --485b397dd4d941781704bb317062 Content-Type: text/plain; charset=US-ASCII; name="value_referenced_value_patch_v2.txt" Content-Disposition: attachment; filename="value_referenced_value_patch_v2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gzs84f320 Content-length: 14673 ZGlmZiAtcnVwTiBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbyBzcmNfcmVmL2dk Yi9kb2MvZ2RiLnRleGluZm8KLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTItMDMtMDggMDA6NTU6MzcuMDAwMDAwMDAwICswNTMwCisrKyBzcmNf cmVmL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wMy0xNCAxNTo0MDo1NS44 OTA5ODM2MjggKzA1MzAKQEAgLTIyMTM3LDYgKzIyMTM3LDc5IEBAIGJhciA9 IGZvby5kZXJlZmVyZW5jZSAoKQogCiBUaGUgcmVzdWx0IEBjb2Rle2Jhcn0g d2lsbCBiZSBhIEBjb2Rle2dkYi5WYWx1ZX0gb2JqZWN0IGhvbGRpbmcgdGhl CiB2YWx1ZSBwb2ludGVkIHRvIGJ5IEBjb2Rle2Zvb30uCisKK0Egc2ltaWxh ciBmdW5jdGlvbiBAY29kZXtWYWx1ZS5yZWZlcmVuY2VkX3ZhbHVlfSBleGlz dHMgd2hpY2ggYWxzbworcmV0dXJucyBAY29kZXtnZGIuVmFsdWV9IG9iamVj dHMgY29ycmVzb25kaW5nIHRvIHRoZSB2YWx1ZXMgcG9pbnRlZCB0bworYnkg cG9pbnRlciB2YWx1ZXMgKGFuZCBhZGRpdGlvbmFsbHksIHZhbHVlcyByZWZl cmVuY2VkIGJ5IHJlZmVyZW5jZQordmFsdWVzKS4gIEhvd2V2ZXIsIHRoZSBi ZWhhdmlvciBvZiBAY29kZXtWYWx1ZS5kZXJlZmVyZW5jZX0KK2RpZmZlcnMg ZnJvbSBAY29kZXtWYWx1ZS5yZWZlcmVuY2VkX3ZhbHVlfSBieSB0aGUgZmFj dCB0aGF0IHRoZQorYmVoYXZpb3Igb2YgQGNvZGV7VmFsdWUuZGVyZWZlcmVu Y2V9IGlzIGlkZW50aWNhbCB0byBhcHBseWluZyB0aGUgQwordW5hcnkgb3Bl cmF0b3IgYConIG9uIGEgZ2l2ZW4gdmFsdWUuICBGb3IgZXhhbXBsZSwgY29u c2lkZXIgYQorcmVmZXJlbmNlIHRvIGEgcG9pbnRlciBAY29kZXtwdHJyZWZ9 LCBkZWNsYXJlZCBpbiB5b3VyIENAdHsrK30gcHJvZ3JhbQorYXMKKworQHNt YWxsZXhhbXBsZQordHlwZWRlZiBpbnQgKmludHB0cjsKKy4uLgoraW50IHZh bCA9IDEwOworaW50cHRyIHB0ciA9ICZ2YWw7CitpbnRwdHIgJnB0cnJlZiA9 IHB0cjsKK0BlbmQgc21hbGxleGFtcGxlCisKK1Rob3VnaCBAY29kZXtwdHJy ZWZ9IGlzIGEgcmVmZXJlbmNlIHZhbHVlLCBvbmUgY2FuIGFwcGx5IHRoZSBt ZXRob2QKK0Bjb2Rle1ZhbHVlLmRlcmVmZXJlbmNlfSB0byB0aGUgQGNvZGV7 Z2RiLlZhbHVlfSBvYmplY3QgY29ycmVzcG9uZGluZwordG8gaXQgYW5kIG9i dGFpbiBhIEBjb2Rle2dkYi5WYWx1ZX0gd2hpY2ggaXMgaWRlbnRpY2FsIHRv IHRoYXQKK2NvcnJlc3BvbmRpbmcgdG8gQGNvZGV7dmFsfS4gIEhvd2V2ZXIs IGlmIHlvdSBhcHBseSB0aGUgbWV0aG9kCitAY29kZXtWYWx1ZS5yZWZlcmVu Y2VkX3ZhbHVlfSwgdGhlIHJlc3VsdCB3b3VsZCBiZSBhIEBjb2Rle2dkYi5W YWx1ZX0KK29iamVjdCBpZGVudGljYWwgdG8gdGhhdCBjb3JyZXNwb25kaW5n IHRvIEBjb2Rle3B0cn0uCisKK0BzbWFsbGV4YW1wbGUKK3B5X3B0cnJlZiA9 IGdkYi5wYXJzZV9hbmRfZXZhbCAoInB0cnJlZiIpCitweV92YWwgPSBweV9w dHJyZWYuZGVyZWZlcmVuY2UgKCkKK3B5X3B0ciA9IHB5X3B0cnJlZi5yZWZl cmVuY2VkX3ZhbHVlICgpCitAZW5kIHNtYWxsZXhhbXBsZQorCitUaGUgQGNv ZGV7Z2RiLlZhbHVlfSBvYmplY3QgQGNvZGV7cHlfdmFsfSBpcyBpZGVudGlj YWwgdG8gdGhhdAorY29ycmVzcG9uZGluZyB0byBAY29kZXt2YWx9LCBhbmQg QGNvZGV7cHlfcHRyfSBpcyBpZGVudGljYWwgdG8gdGhhdAorY29ycmVzcG9u ZGluZyB0byBAY29kZXtwdHJ9LiAgSW4gZ2VuZXJhbCwgQGNvZGV7VmFsdWUu ZGVyZWZlcmVuY2V9IGNhbgorYmUgYXBwbGllZCB3aGVuZXZlciB0aGUgQyB1 bmFyeSBvcGVyYXRvciBgKicgY2FuIGJlIGFwcGxpZWQKK3RvIHRoZSBjb3Jy ZXNwb25kaW5nIEMgdmFsdWUuICBGb3IgdGhvc2UgY2FzZXMgd2hlcmUgYXBw bHlpbmcgYm90aAorQGNvZGV7VmFsdWUuZGVyZWZlcmVuY2V9IGFuZCBAY29k ZXtWYWx1ZS5yZWZlcmVuY2VkX3ZhbHVlfSBpcyBhbGxvd2VkLAordGhlIHJl c3VsdHMgb2J0YWluZWQgbmVlZCBub3QgYmUgaWRlbnRpY2FsIChhcyB3ZSBo YXZlIHNlZW4gaW4gdGhlIGFib3ZlCitleGFtcGxlKS4gIFRoZSByZXN1bHRz IGFyZSBob3dldmVyIGlkZW50aWNhbCB3aGVuIGFwcGxpZWQgb24KK0Bjb2Rl e2dkYi5WYWx1ZX0gb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHBvaW50ZXJz IChAY29kZXtnZGIuVmFsdWV9CitvYmplY3RzIHdpdGggdHlwZSBjb2RlIEBj b2Rle1RZUEVfQ09ERV9QVFJ9KSBpbiBhIEMvQ0B0eysrfSBwcm9ncmFtLgor QGVuZCBkZWZ1bgorCitAZGVmdW4gVmFsdWUucmVmZXJlbmNlZF92YWx1ZSAo KQorRm9yIHBvaW50ZXIgb3IgcmVmZXJlbmNlIGRhdGEgdHlwZXMsIHRoaXMg bWV0aG9kIHJldHVybnMgYSBuZXcKK0Bjb2Rle2dkYi5WYWx1ZX0gb2JqZWN0 IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIHJlZmVyZW5jZWQgYnkgdGhl Citwb2ludGVyL3JlZmVyZW5jZSB2YWx1ZS4gIEZvciBwb2ludGVyIGRhdGEg dHlwZXMsCitAY29kZXtWYWx1ZS5kZXJlZmVyZW5jZX0gYW5kIEBjb2Rle1Zh bHVlLnJlZmVyZW5jZWRfdmFsdWV9IHByb2R1Y2UKK2lkZW50aWNhbCByZXN1 bHRzLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSBtZXRob2RzIGlz IHRoYXQKK0Bjb2Rle1ZhbHVlLmRlcmVmZXJlbmNlfSBjYW5ub3QgZ2V0IHRo ZSB2YWx1ZXMgcmVmZXJlbmNlZCBieSByZWZlcmVuY2UKK3ZhbHVlcy4gIEZv ciBleGFtcGxlLCBjb25zaWRlciBhIHJlZmVyZW5jZSB0byBhbiBAY29kZXtp bnR9LCBkZWNsYXJlZAoraW4geW91ciBDQHR7Kyt9IHByb2dyYW0gYXMKKwor QHNtYWxsZXhhbXBsZQoraW50IHZhbCA9IDEwOworaW50ICZyZWYgPSB2YWw7 CitAZW5kIHNtYWxsZXhhbXBsZQorCitAbm9pbmRlbnQKK3RoZW4gYXBwbHlp bmcgQGNvZGV7VmFsdWUuZGVyZWZlcmVuY2V9IHRvIHRoZSBAY29kZXtnZGIu VmFsdWV9IG9iamVjdAorY29ycmVzcG9uZGluZyB0byBAY29kZXtyZWZ9IHdp bGwgcmVzdWx0IGluIGFuIGVycm9yLCB3aGlsZSBhcHBseWluZworQGNvZGV7 VmFsdWUucmVmZXJlbmNlZF92YWx1ZX0gd2lsbCByZXN1bHQgaW4gYSBAY29k ZXtnZGIuVmFsdWV9IG9iamVjdAoraWRlbnRpY2FsIHRvIHRoYXQgY29ycmVz cG9uZGluZyB0byBAY29kZXt2YWx9LgorCitAc21hbGxleGFtcGxlCitweV9y ZWYgPSBnZGIucGFyc2VfYW5kX2V2YWwgKCJyZWYiKQorZXJfcmVmID0gcHlf cmVmLmRlcmVmZXJlbmNlICgpICAgICAgICMgUmVzdWx0cyBpbiBlcnJvcgor cHlfdmFsID0gcHlfcmVmLnJlZmVyZW5jZWRfdmFsdWUgKCkgICMgUmV0dXJu cyB0aGUgcmVmZXJlbmNlZCB2YWx1ZQorQGVuZCBzbWFsbGV4YW1wbGUKKwor VGhlIEBjb2Rle2dkYi5WYWx1ZX0gb2JqZWN0IEBjb2Rle3B5X3ZhbH0gaXMg aWRlbnRpY2FsIHRvIHRoYXQKK2NvcnJlc3BvbmRpbmcgdG8gQGNvZGV7dmFs fS4KIEBlbmQgZGVmdW4KIAogQGRlZnVuIFZhbHVlLmR5bmFtaWNfY2FzdCAo dHlwZSkKZGlmZiAtcnVwTiBzcmMvZ2RiL05FV1Mgc3JjX3JlZi9nZGIvTkVX UwotLS0gc3JjL2dkYi9ORVdTCTIwMTItMDMtMDggMDA6NTU6MzYuMDAwMDAw MDAwICswNTMwCisrKyBzcmNfcmVmL2dkYi9ORVdTCTIwMTItMDMtMTMgMTY6 NTc6NTMuMjc4MTU4NDU1ICswNTMwCkBAIC0yMyw2ICsyMyw5IEBACiAgICAg IGZyYW1lIGluIG9yZGVyIHRvIGNvbXB1dGUgaXRzIHZhbHVlLCBhbmQgdGhl IGxhdHRlciBjb21wdXRlcyB0aGUKICAgICAgc3ltYm9sJ3MgdmFsdWUuCiAK KyAgKiogQSBuZXcgbWV0aG9kICdyZWZlcmVuY2VkX3ZhbHVlJyBvbiBnZGIu VmFsdWUgb2JqZWN0cyB3aGljaCBjYW4KKyAgICAgZGVyZWZlcmVuY2UgcG9p bnRlciBhcyB3ZWxsIGFzIEMrKyByZWZlcmVuY2UgdmFsdWVzLgorCiAqIEdE QnNlcnZlciBub3cgc3VwcG9ydHMgc3RkaW8gY29ubmVjdGlvbnMuCiAgIEUu Zy4gKGdkYikgdGFyZ2V0IHJlbW90ZSB8IHNzaCBteWhvc3QgZ2Ric2VydmVy IC0gaGVsbG8KIApkaWZmIC1ydXBOIHNyYy9nZGIvcHl0aG9uL3B5LXZhbHVl LmMgc3JjX3JlZi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLS0tIHNyYy9nZGIv cHl0aG9uL3B5LXZhbHVlLmMJMjAxMi0wMy0wMiAwMjozNjo1NC4wMDAwMDAw MDAgKzA1MzAKKysrIHNyY19yZWYvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCTIw MTItMDMtMTMgMTY6NDY6MDcuNzA4MTYwNTU4ICswNTMwCkBAIC0xOTIsNiAr MTkyLDQ3IEBAIHZhbHB5X2RlcmVmZXJlbmNlIChQeU9iamVjdCAqc2VsZiwg UHlPYmoKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogR2l2ZW4gYSB2YWx1 ZSBvZiBhIHBvaW50ZXIgdHlwZSBvciBhIHJlZmVyZW5jZSB0eXBlLCByZXR1 cm4gdGhlIHZhbHVlCisgICByZWZlcmVuY2VkLiBUaGUgZGlmZmVyZW5jZSBi ZXR3ZWVuIHRoaXMgZnVuY3Rpb24gYW5kIHZhbHB5X2RlcmVmZXJlbmNlIGlz CisgICB0aGF0IHRoZSBsYXR0ZXIgYXBwbGllcyAqIHVuYXJ5IG9wZXJhdG9y IHRvIGEgdmFsdWUsIHdoaWNoIG5lZWQgbm90IGFsd2F5cworICAgcmVzdWx0 IGluIHRoZSB2YWx1ZSByZWZlcmVuY2VkLiBGb3IgZXhhbXBsZSwgZm9yIGEg dmFsdWUgd2hpY2ggaXMgYSByZWZlcmVuY2UKKyAgIHRvIGFuICdpbnQnIHBv aW50ZXIgKCdpbnQgKicpLCB2YWxweV9kZXJlZmVyZW5jZSB3aWxsIHJlc3Vs dCBpbiBhIHZhbHVlIG9mCisgICB0eXBlICdpbnQnIHdoaWxlIHZhbHB5X3Jl ZmVyZW5jZWRfdmFsdWUgd2lsbCByZXN1bHQgaW4gYSB2YWx1ZSBvZiB0eXBl CisgICAnaW50IConLiAgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3ZhbHB5 X3JlZmVyZW5jZWRfdmFsdWUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAq YXJncykKK3sKKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhj ZXB0OworICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICBUUllfQ0FU Q0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQorICAgIHsKKyAgICAgIHN0 cnVjdCB2YWx1ZSAqc2VsZl92YWwsICpyZXNfdmFsOworICAgICAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXBfdmFsdWVfZnJlZV90 b19tYXJrICh2YWx1ZV9tYXJrICgpKTsKKworICAgICAgc2VsZl92YWwgPSAo KHZhbHVlX29iamVjdCAqKSBzZWxmKS0+dmFsdWU7CisgICAgICBzd2l0Y2gg KFRZUEVfQ09ERSAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoc2VsZl92 YWwpKSkpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBUWVBFX0NPREVfUFRS OgorICAgICAgICAgIHJlc192YWwgPSB2YWx1ZV9pbmQgKHNlbGZfdmFsKTsK KyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUWVBFX0NPREVfUkVG OgorICAgICAgICAgIHJlc192YWwgPSBjb2VyY2VfcmVmIChzZWxmX3ZhbCk7 CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg ICAgZXJyb3IoXygiVHJ5aW5nIHRvIGdldCB0aGUgcmVmZXJlbmNlZCB2YWx1 ZSBmcm9tIGEgdmFsdWUgd2hpY2ggaXMgIgorICAgICAgICAgICAgICAgICAg Im5laXRoZXIgYSBwb2ludGVyIG5vciBhIHJlZmVyZW5jZS4iKSk7CisgICAg ICAgIH0KKworICAgICAgcmVzdWx0ID0gdmFsdWVfdG9fdmFsdWVfb2JqZWN0 IChyZXNfdmFsKTsKKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAg ICB9CisgIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOworCisg IHJldHVybiByZXN1bHQ7Cit9CisKIC8qIFJldHVybiAiJnZhbHVlIi4gICov CiBzdGF0aWMgUHlPYmplY3QgKgogdmFscHlfZ2V0X2FkZHJlc3MgKFB5T2Jq ZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQpAQCAtMTM3OSw2ICsxNDIwLDgg QEAgQ2FzdCB0aGUgdmFsdWUgdG8gdGhlIHN1cHBsaWVkIHR5cGUsIGFzIAog cmVpbnRlcnByZXRfY2FzdCBvcGVyYXRvci4iCiAgIH0sCiAgIHsgImRlcmVm ZXJlbmNlIiwgdmFscHlfZGVyZWZlcmVuY2UsIE1FVEhfTk9BUkdTLCAiRGVy ZWZlcmVuY2VzIHRoZSB2YWx1ZS4iIH0sCisgIHsgInJlZmVyZW5jZWRfdmFs dWUiLCB2YWxweV9yZWZlcmVuY2VkX3ZhbHVlLCBNRVRIX05PQVJHUywKKyAg ICAiUmV0dXJuIHRoZSB2YWx1ZSByZWZlcmVuY2VkIGJ5IGEgVFlQRV9DT0RF X1JFRiB2YWx1ZS4iIH0sCiAgIHsgImxhenlfc3RyaW5nIiwgKFB5Q0Z1bmN0 aW9uKSB2YWxweV9sYXp5X3N0cmluZywKICAgICBNRVRIX1ZBUkFSR1MgfCBN RVRIX0tFWVdPUkRTLAogICAgICJsYXp5X3N0cmluZyAoW2VuY29kaW5nXSAg WywgbGVuZ3RoXSkgLT4gbGF6eV9zdHJpbmdcblwKZGlmZiAtcnVwTiBzcmMv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluIHNyY19yZWYv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCi0tLSBzcmMv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCTIwMTEtMTIt MjMgMjI6MzY6MTYuMDAwMDAwMDAwICswNTMwCisrKyBzcmNfcmVmL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9NYWtlZmlsZS5pbgkyMDEyLTAzLTExIDAw OjQwOjM2LjkwMjk1MzUyOSArMDUzMApAQCAtNSw3ICs1LDcgQEAgRVhFQ1VU QUJMRVMgPSBweS10eXBlIHB5LXZhbHVlIHB5LXByZXR0eQogCXB5LXN5bWJv bCBweS1taSBweS1icmVha3BvaW50IHB5LWluZmVyaW9yIHB5LWluZnRocmVh ZCBcCiAJcHktc2hhcmVkIHB5dGhvbiBsaWItdHlwZXMgcHktZXZlbnRzIHB5 LWV2dGhyZWFkcyBweS1mcmFtZSBcCiAJcHktbWkgcHktcHAtbWFpbnQgcHkt cHJvZ3NwYWNlIHB5LXNlY3Rpb24tc2NyaXB0IHB5LW9iamZpbGUgXAotCXB5 LWZpbmlzaC1icmVha3BvaW50IHB5LWZpbmlzaC1icmVha3BvaW50MgorCXB5 LWZpbmlzaC1icmVha3BvaW50IHB5LWZpbmlzaC1icmVha3BvaW50MiBweS12 YWx1ZS1jYwogCiBNSVNDRUxMQU5FT1VTID0gcHktc2hhcmVkLXNsLnNsIHB5 LWV2ZW50cy1zaGxpYi5zbyBweS1ldmVudHMtc2hsaWItbm9kZWJ1Zy5zbyAK IApkaWZmIC1ydXBOIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt dmFsdWUuY2Mgc3JjX3JlZi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt dmFsdWUuY2MKLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt dmFsdWUuY2MJMTk3MC0wMS0wMSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAK KysrIHNyY19yZWYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVl LmNjCTIwMTItMDMtMTMgMTI6MjQ6MjguODU4MTkwMzkyICswNTMwCkBAIC0w LDAgKzEsMzkgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworCitjbGFzcyBBIHsKK307CisKK3R5cGVkZWYgaW50ICpp bnRfcHRyOworCitpbnQKK2Z1bmMgKGNvbnN0IEEgJmEpCit7CisgIGludCB2 YWwgPSAxMDsKKyAgaW50ICZpbnRfcmVmID0gdmFsOworICBpbnRfcHRyIHB0 ciA9ICZ2YWw7CisgIGludF9wdHIgJmludF9wdHJfcmVmID0gcHRyOworCisg IHJldHVybiAwOyAvKiBCcmVhayBoZXJlLiAgKi8KK30KKworaW50CittYWlu ICgpCit7CisgIEEgb2JqOworICByZXR1cm4gZnVuYyAob2JqKTsKK30KZGlm ZiAtcnVwTiBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVl LWNjLmV4cCBzcmNfcmVmL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12 YWx1ZS1jYy5leHAKLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktdmFsdWUtY2MuZXhwCTE5NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAwMDAw ICswNTMwCisrKyBzcmNfcmVmL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS12YWx1ZS1jYy5leHAJMjAxMi0wMy0xMyAxMTowMDo1MC40NjgxNTg3MTQg KzA1MzAKQEAgLTAsMCArMSw1NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdEQiB0ZXN0c3Vp dGUuICBJdCB0ZXN0cyB0aGUgbWVjaGFuaXNtCisjIGV4cG9zaW5nIHZhbHVl cyB0byBQeXRob24uCisKK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBj b250aW51ZSB9CisKK3NldCB0ZXN0ZmlsZSAicHktdmFsdWUiCitzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jYworc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfQoraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1 dGFibGUgXAorCSAge2RlYnVnIGMrK31dICE9ICIiIH0geworICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisgICAgcmV0dXJu IC0xCit9CisKKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KKworZ2RiX2V4 aXQKK2dkYl9zdGFydAorZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCisKKyMgU2tpcCBhbGwgdGVzdHMgaWYgUHl0aG9uIHNjcmlwdGlu ZyBpcyBub3QgZW5hYmxlZC4KK2lmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9 IHsgY29udGludWUgfQorCitnZGJfbG9hZCAke2JpbmZpbGV9CisKK2lmICFb cnVudG9fbWFpbl0geworICAgcmV0dXJuIC0xCit9CisKK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCcmVhayBoZXJlLiJdCitnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiQnJlYWsgaGVyZSIgIi4qQnJlYWsg aGVyZS4qIgorCitnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0cihnZGIucGFy c2VfYW5kX2V2YWwoXCJhXCIpLnR5cGUpIiAiY29uc3QgQSAmIgorZ2RiX3Rl c3QgInB5dGhvbiBwcmludCBzdHIoZ2RiLnBhcnNlX2FuZF9ldmFsKFwiYVwi KS5yZWZlcmVuY2VkX3ZhbHVlKCkudHlwZSkiICJjb25zdCBBIgorZ2RiX3Rl c3QgInB5dGhvbiBwcmludCBzdHIoZ2RiLnBhcnNlX2FuZF9ldmFsKFwiaW50 X3JlZlwiKS50eXBlKSIgImludCAmIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCBzdHIoZ2RiLnBhcnNlX2FuZF9ldmFsKFwiaW50X3JlZlwiKS5yZWZlcmVu Y2VkX3ZhbHVlKCkudHlwZSkiICJpbnQiCitnZGJfdGVzdCAicHl0aG9uIHBy aW50IHN0cihnZGIucGFyc2VfYW5kX2V2YWwoXCJpbnRfcmVmXCIpLnJlZmVy ZW5jZWRfdmFsdWUoKSkiICIxMCIKKworZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCBzdHIoZ2RiLnBhcnNlX2FuZF9ldmFsKFwiaW50X3B0cl9yZWZcIikuZGVy ZWZlcmVuY2UoKS50eXBlKSIgImludCIKK2dkYl90ZXN0ICJweXRob24gcHJp bnQgc3RyKGdkYi5wYXJzZV9hbmRfZXZhbChcImludF9wdHJfcmVmXCIpLnJl ZmVyZW5jZWRfdmFsdWUoKS50eXBlKSIgImludF9wdHIiCitnZGJfdGVzdCAi cHl0aG9uIHByaW50IHN0cihnZGIucGFyc2VfYW5kX2V2YWwoXCJpbnRfcHRy X3JlZlwiKS5yZWZlcmVuY2VkX3ZhbHVlKCkuZGVyZWZlcmVuY2UoKSkiICIx MCIKK2dkYl90ZXN0ICJweXRob24gcHJpbnQgc3RyKGdkYi5wYXJzZV9hbmRf ZXZhbChcImludF9wdHJfcmVmXCIpLnJlZmVyZW5jZWRfdmFsdWUoKS5yZWZl cmVuY2VkX3ZhbHVlKCkpIiAiMTAiCg== --485b397dd4d941781704bb317062--