From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31915 invoked by alias); 14 Mar 2012 18:07:41 -0000 Received: (qmail 31898 invoked by uid 22791); 14 Mar 2012 18:07:37 -0000 X-SWARE-Spam-Status: No, hits=1.9 required=5.0 tests=AWL,BAYES_50,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-fa0-f41.google.com (HELO mail-fa0-f41.google.com) (209.85.161.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 14 Mar 2012 18:07:22 +0000 Received: by faaq22 with SMTP id q22so558977faa.0 for ; Wed, 14 Mar 2012 11:07:21 -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=W7XkZSh37Hgva7o4YivXEV/GHNAzachY45ICgQ02j30=; b=YMY0VVHeIMBZG5FHtjcbXuclRNCOaOaR3m2PVOZGXDha7O9HzFaqdVQmaUm9p3zrtf G2+y484uxDrhERsTuVgOlgZZiuqaq/Itw7h2iXGkze14pv/RKwaucRjf8BfxoY27DaeY /IvDq/ES2C3c2FOQS4xp6SNyIBIsOGltE6syn3hUIbauTeJdzJOHdukND1c4WwtZmx/I 62cG0km/tUfs+22BDGpdS0+hErf2uMI+R0hDpYgSm1I+sEnHjk8kG8sYG17e0gIby0WR ds0WgAfEQzHClULTkKx4+aDvt0gzYZIO2GRpaWYx6Ubm+zYP0WtmbvX5JxRIlRQ2qVmP zSCA== Received: by 10.224.106.66 with SMTP id w2mr4370167qao.1.1331748437726; Wed, 14 Mar 2012 11:07:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.106.66 with SMTP id w2mr4370157qao.1.1331748437635; Wed, 14 Mar 2012 11:07:17 -0700 (PDT) Received: by 10.224.182.136 with HTTP; Wed, 14 Mar 2012 11:07:17 -0700 (PDT) In-Reply-To: <83bonzvzn5.fsf@gnu.org> References: <83pqcgwc2w.fsf@gnu.org> <83bonzvzn5.fsf@gnu.org> Date: Wed, 14 Mar 2012 18:07: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=20cf3074afd68e30b004bb37d867 X-System-Of-Record: true X-Gm-Message-State: ALoCoQn+35242RLjYR+ZPIRwiZUlefpAwidLokDPVFoUYwRnV/wXI+KGj7V9dDTiDn1OFPmAy9YOzGY+XpHC+Jf3dWtUjwSF71lBJTnkQTnUl3PG+NkfpOybzflC7OvWnuOjX+J6Iv8RqR2dRoRfhHgx92Z/BU289A== 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/msg00497.txt.bz2 --20cf3074afd68e30b004bb37d867 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1367 Eli> Please use "@code{*}" instead of "`*'" (here and elsewhere). Eli> Otherwise, this version of documentation is fine with me. OK, done. Patch is attached. Changelogs are below. 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. OK? Thanks, Siva Chandra --20cf3074afd68e30b004bb37d867 Content-Type: text/plain; charset=US-ASCII; name="value_referenced_value_patch_v4.txt" Content-Disposition: attachment; filename="value_referenced_value_patch_v4.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gzsojhzu0 Content-length: 14457 ZGlmZiAtcnVwTiBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbyBzcmNfcmVmL2dk Yi9kb2MvZ2RiLnRleGluZm8KLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTItMDMtMDggMDA6NTU6MzcuMDAwMDAwMDAwICswNTMwCisrKyBzcmNf cmVmL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wMy0xNCAyMzoyODo0OC4w ODcxMjg0NTkgKzA1MzAKQEAgLTIyMTM3LDYgKzIyMTM3LDc5IEBAIGJhciA9 IGZvby5kZXJlZmVyZW5jZSAoKQogCiBUaGUgcmVzdWx0IEBjb2Rle2Jhcn0g d2lsbCBiZSBhIEBjb2Rle2dkYi5WYWx1ZX0gb2JqZWN0IGhvbGRpbmcgdGhl CiB2YWx1ZSBwb2ludGVkIHRvIGJ5IEBjb2Rle2Zvb30uCisKK0Egc2ltaWxh ciBmdW5jdGlvbiBAY29kZXtWYWx1ZS5yZWZlcmVuY2VkX3ZhbHVlfSBleGlz dHMgd2hpY2ggYWxzbworcmV0dXJucyBAY29kZXtnZGIuVmFsdWV9IG9iamVj dHMgY29ycmVzb25kaW5nIHRvIHRoZSB2YWx1ZXMgcG9pbnRlZCB0bworYnkg cG9pbnRlciB2YWx1ZXMgKGFuZCBhZGRpdGlvbmFsbHksIHZhbHVlcyByZWZl cmVuY2VkIGJ5IHJlZmVyZW5jZQordmFsdWVzKS4gIEhvd2V2ZXIsIHRoZSBi ZWhhdmlvciBvZiBAY29kZXtWYWx1ZS5kZXJlZmVyZW5jZX0KK2RpZmZlcnMg ZnJvbSBAY29kZXtWYWx1ZS5yZWZlcmVuY2VkX3ZhbHVlfSBieSB0aGUgZmFj dCB0aGF0IHRoZQorYmVoYXZpb3Igb2YgQGNvZGV7VmFsdWUuZGVyZWZlcmVu Y2V9IGlzIGlkZW50aWNhbCB0byBhcHBseWluZyB0aGUgQwordW5hcnkgb3Bl cmF0b3IgQGNvZGV7Kn0gb24gYSBnaXZlbiB2YWx1ZS4gIEZvciBleGFtcGxl LCBjb25zaWRlciBhCityZWZlcmVuY2UgdG8gYSBwb2ludGVyIEBjb2Rle3B0 cnJlZn0sIGRlY2xhcmVkIGluIHlvdXIgQ0B0eysrfSBwcm9ncmFtCithcwor CitAc21hbGxleGFtcGxlCit0eXBlZGVmIGludCAqaW50cHRyOworLi4uCitp bnQgdmFsID0gMTA7CitpbnRwdHIgcHRyID0gJnZhbDsKK2ludHB0ciAmcHRy cmVmID0gcHRyOworQGVuZCBzbWFsbGV4YW1wbGUKKworVGhvdWdoIEBjb2Rl e3B0cnJlZn0gaXMgYSByZWZlcmVuY2UgdmFsdWUsIG9uZSBjYW4gYXBwbHkg dGhlIG1ldGhvZAorQGNvZGV7VmFsdWUuZGVyZWZlcmVuY2V9IHRvIHRoZSBA Y29kZXtnZGIuVmFsdWV9IG9iamVjdCBjb3JyZXNwb25kaW5nCit0byBpdCBh bmQgb2J0YWluIGEgQGNvZGV7Z2RiLlZhbHVlfSB3aGljaCBpcyBpZGVudGlj YWwgdG8gdGhhdAorY29ycmVzcG9uZGluZyB0byBAY29kZXt2YWx9LiAgSG93 ZXZlciwgaWYgeW91IGFwcGx5IHRoZSBtZXRob2QKK0Bjb2Rle1ZhbHVlLnJl ZmVyZW5jZWRfdmFsdWV9LCB0aGUgcmVzdWx0IHdvdWxkIGJlIGEgQGNvZGV7 Z2RiLlZhbHVlfQorb2JqZWN0IGlkZW50aWNhbCB0byB0aGF0IGNvcnJlc3Bv bmRpbmcgdG8gQGNvZGV7cHRyfS4KKworQHNtYWxsZXhhbXBsZQorcHlfcHRy cmVmID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgicHRycmVmIikKK3B5X3ZhbCA9 IHB5X3B0cnJlZi5kZXJlZmVyZW5jZSAoKQorcHlfcHRyID0gcHlfcHRycmVm LnJlZmVyZW5jZWRfdmFsdWUgKCkKK0BlbmQgc21hbGxleGFtcGxlCisKK1Ro ZSBAY29kZXtnZGIuVmFsdWV9IG9iamVjdCBAY29kZXtweV92YWx9IGlzIGlk ZW50aWNhbCB0byB0aGF0Citjb3JyZXNwb25kaW5nIHRvIEBjb2Rle3ZhbH0s IGFuZCBAY29kZXtweV9wdHJ9IGlzIGlkZW50aWNhbCB0byB0aGF0Citjb3Jy ZXNwb25kaW5nIHRvIEBjb2Rle3B0cn0uICBJbiBnZW5lcmFsLCBAY29kZXtW YWx1ZS5kZXJlZmVyZW5jZX0gY2FuCitiZSBhcHBsaWVkIHdoZW5ldmVyIHRo ZSBDIHVuYXJ5IG9wZXJhdG9yIEBjb2Rleyp9IGNhbiBiZSBhcHBsaWVkCit0 byB0aGUgY29ycmVzcG9uZGluZyBDIHZhbHVlLiAgRm9yIHRob3NlIGNhc2Vz IHdoZXJlIGFwcGx5aW5nIGJvdGgKK0Bjb2Rle1ZhbHVlLmRlcmVmZXJlbmNl fSBhbmQgQGNvZGV7VmFsdWUucmVmZXJlbmNlZF92YWx1ZX0gaXMgYWxsb3dl ZCwKK3RoZSByZXN1bHRzIG9idGFpbmVkIG5lZWQgbm90IGJlIGlkZW50aWNh bCAoYXMgd2UgaGF2ZSBzZWVuIGluIHRoZSBhYm92ZQorZXhhbXBsZSkuICBU aGUgcmVzdWx0cyBhcmUgaG93ZXZlciBpZGVudGljYWwgd2hlbiBhcHBsaWVk IG9uCitAY29kZXtnZGIuVmFsdWV9IG9iamVjdHMgY29ycmVzcG9uZGluZyB0 byBwb2ludGVycyAoQGNvZGV7Z2RiLlZhbHVlfQorb2JqZWN0cyB3aXRoIHR5 cGUgY29kZSBAY29kZXtUWVBFX0NPREVfUFRSfSkgaW4gYSBDL0NAdHsrK30g cHJvZ3JhbS4KK0BlbmQgZGVmdW4KKworQGRlZnVuIFZhbHVlLnJlZmVyZW5j ZWRfdmFsdWUgKCkKK0ZvciBwb2ludGVyIG9yIHJlZmVyZW5jZSBkYXRhIHR5 cGVzLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3CitAY29kZXtnZGIuVmFs dWV9IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSB2YWx1ZSByZWZlcmVu Y2VkIGJ5IHRoZQorcG9pbnRlci9yZWZlcmVuY2UgdmFsdWUuICBGb3IgcG9p bnRlciBkYXRhIHR5cGVzLAorQGNvZGV7VmFsdWUuZGVyZWZlcmVuY2V9IGFu ZCBAY29kZXtWYWx1ZS5yZWZlcmVuY2VkX3ZhbHVlfSBwcm9kdWNlCitpZGVu dGljYWwgcmVzdWx0cy4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2Ug bWV0aG9kcyBpcyB0aGF0CitAY29kZXtWYWx1ZS5kZXJlZmVyZW5jZX0gY2Fu bm90IGdldCB0aGUgdmFsdWVzIHJlZmVyZW5jZWQgYnkgcmVmZXJlbmNlCit2 YWx1ZXMuICBGb3IgZXhhbXBsZSwgY29uc2lkZXIgYSByZWZlcmVuY2UgdG8g YW4gQGNvZGV7aW50fSwgZGVjbGFyZWQKK2luIHlvdXIgQ0B0eysrfSBwcm9n cmFtIGFzCisKK0BzbWFsbGV4YW1wbGUKK2ludCB2YWwgPSAxMDsKK2ludCAm cmVmID0gdmFsOworQGVuZCBzbWFsbGV4YW1wbGUKKworQG5vaW5kZW50Cit0 aGVuIGFwcGx5aW5nIEBjb2Rle1ZhbHVlLmRlcmVmZXJlbmNlfSB0byB0aGUg QGNvZGV7Z2RiLlZhbHVlfSBvYmplY3QKK2NvcnJlc3BvbmRpbmcgdG8gQGNv ZGV7cmVmfSB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciwgd2hpbGUgYXBwbHlp bmcKK0Bjb2Rle1ZhbHVlLnJlZmVyZW5jZWRfdmFsdWV9IHdpbGwgcmVzdWx0 IGluIGEgQGNvZGV7Z2RiLlZhbHVlfSBvYmplY3QKK2lkZW50aWNhbCB0byB0 aGF0IGNvcnJlc3BvbmRpbmcgdG8gQGNvZGV7dmFsfS4KKworQHNtYWxsZXhh bXBsZQorcHlfcmVmID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgicmVmIikKK2Vy X3JlZiA9IHB5X3JlZi5kZXJlZmVyZW5jZSAoKSAgICAgICAjIFJlc3VsdHMg aW4gZXJyb3IKK3B5X3ZhbCA9IHB5X3JlZi5yZWZlcmVuY2VkX3ZhbHVlICgp ICAjIFJldHVybnMgdGhlIHJlZmVyZW5jZWQgdmFsdWUKK0BlbmQgc21hbGxl eGFtcGxlCisKK1RoZSBAY29kZXtnZGIuVmFsdWV9IG9iamVjdCBAY29kZXtw eV92YWx9IGlzIGlkZW50aWNhbCB0byB0aGF0Citjb3JyZXNwb25kaW5nIHRv IEBjb2Rle3ZhbH0uCiBAZW5kIGRlZnVuCiAKIEBkZWZ1biBWYWx1ZS5keW5h bWljX2Nhc3QgKHR5cGUpCmRpZmYgLXJ1cE4gc3JjL2dkYi9ORVdTIHNyY19y ZWYvZ2RiL05FV1MKLS0tIHNyYy9nZGIvTkVXUwkyMDEyLTAzLTA4IDAwOjU1 OjM2LjAwMDAwMDAwMCArMDUzMAorKysgc3JjX3JlZi9nZGIvTkVXUwkyMDEy LTAzLTEzIDE2OjU3OjUzLjI3ODE1ODQ1NSArMDUzMApAQCAtMjMsNiArMjMs OSBAQAogICAgICBmcmFtZSBpbiBvcmRlciB0byBjb21wdXRlIGl0cyB2YWx1 ZSwgYW5kIHRoZSBsYXR0ZXIgY29tcHV0ZXMgdGhlCiAgICAgIHN5bWJvbCdz IHZhbHVlLgogCisgICoqIEEgbmV3IG1ldGhvZCAncmVmZXJlbmNlZF92YWx1 ZScgb24gZ2RiLlZhbHVlIG9iamVjdHMgd2hpY2ggY2FuCisgICAgIGRlcmVm ZXJlbmNlIHBvaW50ZXIgYXMgd2VsbCBhcyBDKysgcmVmZXJlbmNlIHZhbHVl cy4KKwogKiBHREJzZXJ2ZXIgbm93IHN1cHBvcnRzIHN0ZGlvIGNvbm5lY3Rp b25zLgogICBFLmcuIChnZGIpIHRhcmdldCByZW1vdGUgfCBzc2ggbXlob3N0 IGdkYnNlcnZlciAtIGhlbGxvCiAKZGlmZiAtcnVwTiBzcmMvZ2RiL3B5dGhv bi9weS12YWx1ZS5jIHNyY19yZWYvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCi0t LSBzcmMvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCTIwMTItMDMtMDIgMDI6MzY6 NTQuMDAwMDAwMDAwICswNTMwCisrKyBzcmNfcmVmL2dkYi9weXRob24vcHkt dmFsdWUuYwkyMDEyLTAzLTE0IDIyOjQyOjE3LjI5OTgzMzI5MyArMDUzMApA QCAtMTkyLDYgKzE5Miw0NyBAQCB2YWxweV9kZXJlZmVyZW5jZSAoUHlPYmpl Y3QgKnNlbGYsIFB5T2JqCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qIEdp dmVuIGEgdmFsdWUgb2YgYSBwb2ludGVyIHR5cGUgb3IgYSByZWZlcmVuY2Ug dHlwZSwgcmV0dXJuIHRoZSB2YWx1ZQorICAgcmVmZXJlbmNlZC4gVGhlIGRp ZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGZ1bmN0aW9uIGFuZCB2YWxweV9kZXJl ZmVyZW5jZSBpcworICAgdGhhdCB0aGUgbGF0dGVyIGFwcGxpZXMgKiB1bmFy eSBvcGVyYXRvciB0byBhIHZhbHVlLCB3aGljaCBuZWVkIG5vdCBhbHdheXMK KyAgIHJlc3VsdCBpbiB0aGUgdmFsdWUgcmVmZXJlbmNlZC4gRm9yIGV4YW1w bGUsIGZvciBhIHZhbHVlIHdoaWNoIGlzIGEgcmVmZXJlbmNlCisgICB0byBh biAnaW50JyBwb2ludGVyICgnaW50IConKSwgdmFscHlfZGVyZWZlcmVuY2Ug d2lsbCByZXN1bHQgaW4gYSB2YWx1ZSBvZgorICAgdHlwZSAnaW50JyB3aGls ZSB2YWxweV9yZWZlcmVuY2VkX3ZhbHVlIHdpbGwgcmVzdWx0IGluIGEgdmFs dWUgb2YgdHlwZQorICAgJ2ludCAqJy4gICovCisKK3N0YXRpYyBQeU9iamVj dCAqCit2YWxweV9yZWZlcmVuY2VkX3ZhbHVlIChQeU9iamVjdCAqc2VsZiwg UHlPYmplY3QgKmFyZ3MpCit7CisgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGV4Y2VwdDsKKyAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisK KyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKKyAgICB7 CisgICAgICBzdHJ1Y3QgdmFsdWUgKnNlbGZfdmFsLCAqcmVzX3ZhbDsKKyAg ICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3Zh bHVlX2ZyZWVfdG9fbWFyayAodmFsdWVfbWFyayAoKSk7CisKKyAgICAgIHNl bGZfdmFsID0gKCh2YWx1ZV9vYmplY3QgKikgc2VsZiktPnZhbHVlOworICAg ICAgc3dpdGNoIChUWVBFX0NPREUgKGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5 cGUgKHNlbGZfdmFsKSkpKQorICAgICAgICB7CisgICAgICAgIGNhc2UgVFlQ RV9DT0RFX1BUUjoKKyAgICAgICAgICByZXNfdmFsID0gdmFsdWVfaW5kIChz ZWxmX3ZhbCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFlQ RV9DT0RFX1JFRjoKKyAgICAgICAgICByZXNfdmFsID0gY29lcmNlX3JlZiAo c2VsZl92YWwpOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0 OgorICAgICAgICAgIGVycm9yKF8oIlRyeWluZyB0byBnZXQgdGhlIHJlZmVy ZW5jZWQgdmFsdWUgZnJvbSBhIHZhbHVlIHdoaWNoIGlzICIKKyAgICAgICAg ICAgICAgICAgICJuZWl0aGVyIGEgcG9pbnRlciBub3IgYSByZWZlcmVuY2Uu IikpOworICAgICAgICB9CisKKyAgICAgIHJlc3VsdCA9IHZhbHVlX3RvX3Zh bHVlX29iamVjdCAocmVzX3ZhbCk7CisgICAgICBkb19jbGVhbnVwcyAoY2xl YW51cCk7CisgICAgfQorICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhj ZXB0KTsKKworICByZXR1cm4gcmVzdWx0OworfQorCiAvKiBSZXR1cm4gIiZ2 YWx1ZSIuICAqLwogc3RhdGljIFB5T2JqZWN0ICoKIHZhbHB5X2dldF9hZGRy ZXNzIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKQEAgLTEzNzks NiArMTQyMCw4IEBAIENhc3QgdGhlIHZhbHVlIHRvIHRoZSBzdXBwbGllZCB0 eXBlLCBhcyAKIHJlaW50ZXJwcmV0X2Nhc3Qgb3BlcmF0b3IuIgogICB9LAog ICB7ICJkZXJlZmVyZW5jZSIsIHZhbHB5X2RlcmVmZXJlbmNlLCBNRVRIX05P QVJHUywgIkRlcmVmZXJlbmNlcyB0aGUgdmFsdWUuIiB9LAorICB7ICJyZWZl cmVuY2VkX3ZhbHVlIiwgdmFscHlfcmVmZXJlbmNlZF92YWx1ZSwgTUVUSF9O T0FSR1MsCisgICAgIlJldHVybiB0aGUgdmFsdWUgcmVmZXJlbmNlZCBieSBh IFRZUEVfQ09ERV9SRUYgb3IgVFlQRV9DT0RFX1BUUiB2YWx1ZS4iIH0sCiAg IHsgImxhenlfc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKSB2YWxweV9sYXp5X3N0 cmluZywKICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAg ICJsYXp5X3N0cmluZyAoW2VuY29kaW5nXSAgWywgbGVuZ3RoXSkgLT4gbGF6 eV9zdHJpbmdcblwKZGlmZiAtcnVwTiBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL01ha2VmaWxlLmluIHNyY19yZWYvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL01ha2VmaWxlLmluCi0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL01ha2VmaWxlLmluCTIwMTEtMTItMjMgMjI6MzY6MTYuMDAwMDAw MDAwICswNTMwCisrKyBzcmNfcmVmL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9NYWtlZmlsZS5pbgkyMDEyLTAzLTExIDAwOjQwOjM2LjkwMjk1MzUyOSAr MDUzMApAQCAtNSw3ICs1LDcgQEAgRVhFQ1VUQUJMRVMgPSBweS10eXBlIHB5 LXZhbHVlIHB5LXByZXR0eQogCXB5LXN5bWJvbCBweS1taSBweS1icmVha3Bv aW50IHB5LWluZmVyaW9yIHB5LWluZnRocmVhZCBcCiAJcHktc2hhcmVkIHB5 dGhvbiBsaWItdHlwZXMgcHktZXZlbnRzIHB5LWV2dGhyZWFkcyBweS1mcmFt ZSBcCiAJcHktbWkgcHktcHAtbWFpbnQgcHktcHJvZ3NwYWNlIHB5LXNlY3Rp b24tc2NyaXB0IHB5LW9iamZpbGUgXAotCXB5LWZpbmlzaC1icmVha3BvaW50 IHB5LWZpbmlzaC1icmVha3BvaW50MgorCXB5LWZpbmlzaC1icmVha3BvaW50 IHB5LWZpbmlzaC1icmVha3BvaW50MiBweS12YWx1ZS1jYwogCiBNSVNDRUxM QU5FT1VTID0gcHktc2hhcmVkLXNsLnNsIHB5LWV2ZW50cy1zaGxpYi5zbyBw eS1ldmVudHMtc2hsaWItbm9kZWJ1Zy5zbyAKIApkaWZmIC1ydXBOIHNyYy9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuY2Mgc3JjX3JlZi9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuY2MKLS0tIHNyYy9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuY2MJMTk3MC0wMS0w MSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrIHNyY19yZWYvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmNjCTIwMTItMDMtMTMgMTI6 MjQ6MjguODU4MTkwMzkyICswNTMwCkBAIC0wLDAgKzEsMzkgQEAKKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CisKKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCitjbGFz cyBBIHsKK307CisKK3R5cGVkZWYgaW50ICppbnRfcHRyOworCitpbnQKK2Z1 bmMgKGNvbnN0IEEgJmEpCit7CisgIGludCB2YWwgPSAxMDsKKyAgaW50ICZp bnRfcmVmID0gdmFsOworICBpbnRfcHRyIHB0ciA9ICZ2YWw7CisgIGludF9w dHIgJmludF9wdHJfcmVmID0gcHRyOworCisgIHJldHVybiAwOyAvKiBCcmVh ayBoZXJlLiAgKi8KK30KKworaW50CittYWluICgpCit7CisgIEEgb2JqOwor ICByZXR1cm4gZnVuYyAob2JqKTsKK30KZGlmZiAtcnVwTiBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLWNjLmV4cCBzcmNfcmVmL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS1jYy5leHAKLS0tIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUtY2MuZXhwCTE5 NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAwMDAwICswNTMwCisrKyBzcmNfcmVm L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS1jYy5leHAJMjAx Mi0wMy0xNCAyMjozMTowMC43Njk2Mjg0MDUgKzA1MzAKQEAgLTAsMCArMSw0 OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMK KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdEQiB0ZXN0c3VpdGUuICBJdCB0ZXN0cyB0aGUg bWVjaGFuaXNtCisjIGV4cG9zaW5nIHZhbHVlcyB0byBQeXRob24uCisKK2lm IHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9CisKK3NldCB0 ZXN0ZmlsZSAicHktdmFsdWUiCitzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5j Yworc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQorCitpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAk dGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGMrK31dfSB7CisgICAgcmV0dXJu IC0xCit9CisKKyMgU2tpcCBhbGwgdGVzdHMgaWYgUHl0aG9uIHNjcmlwdGlu ZyBpcyBub3QgZW5hYmxlZC4KK2lmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9 IHsgY29udGludWUgfQorCitpZiAhW3J1bnRvX21haW5dIHsKKyAgIHJldHVy biAtMQorfQorCitnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiQnJlYWsgaGVyZS4iXQorZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg IkJyZWFrIGhlcmUiICIuKkJyZWFrIGhlcmUuKiIKKworZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCBzdHIoZ2RiLnBhcnNlX2FuZF9ldmFsKFwiYVwiKS50eXBl KSIgImNvbnN0IEEgJiIKK2dkYl90ZXN0ICJweXRob24gcHJpbnQgc3RyKGdk Yi5wYXJzZV9hbmRfZXZhbChcImFcIikucmVmZXJlbmNlZF92YWx1ZSgpLnR5 cGUpIiAiY29uc3QgQSIKK2dkYl90ZXN0ICJweXRob24gcHJpbnQgc3RyKGdk Yi5wYXJzZV9hbmRfZXZhbChcImludF9yZWZcIikudHlwZSkiICJpbnQgJiIK K2dkYl90ZXN0ICJweXRob24gcHJpbnQgc3RyKGdkYi5wYXJzZV9hbmRfZXZh bChcImludF9yZWZcIikucmVmZXJlbmNlZF92YWx1ZSgpLnR5cGUpIiAiaW50 IgorZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBzdHIoZ2RiLnBhcnNlX2FuZF9l dmFsKFwiaW50X3JlZlwiKS5yZWZlcmVuY2VkX3ZhbHVlKCkpIiAiMTAiCisK K2dkYl90ZXN0ICJweXRob24gcHJpbnQgc3RyKGdkYi5wYXJzZV9hbmRfZXZh bChcImludF9wdHJfcmVmXCIpLmRlcmVmZXJlbmNlKCkudHlwZSkiICJpbnQi CitnZGJfdGVzdCAicHl0aG9uIHByaW50IHN0cihnZGIucGFyc2VfYW5kX2V2 YWwoXCJpbnRfcHRyX3JlZlwiKS5yZWZlcmVuY2VkX3ZhbHVlKCkudHlwZSki ICJpbnRfcHRyIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBzdHIoZ2RiLnBh cnNlX2FuZF9ldmFsKFwiaW50X3B0cl9yZWZcIikucmVmZXJlbmNlZF92YWx1 ZSgpLmRlcmVmZXJlbmNlKCkpIiAiMTAiCitnZGJfdGVzdCAicHl0aG9uIHBy aW50IHN0cihnZGIucGFyc2VfYW5kX2V2YWwoXCJpbnRfcHRyX3JlZlwiKS5y ZWZlcmVuY2VkX3ZhbHVlKCkucmVmZXJlbmNlZF92YWx1ZSgpKSIgIjEwIgo= --20cf3074afd68e30b004bb37d867--