From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9592 invoked by alias); 9 Apr 2012 18:34:43 -0000 Received: (qmail 9055 invoked by uid 22791); 9 Apr 2012 18:34:41 -0000 X-SWARE-Spam-Status: No, hits=-4.1 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,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-qc0-f169.google.com (HELO mail-qc0-f169.google.com) (209.85.216.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 09 Apr 2012 18:34:11 +0000 Received: by qcsd16 with SMTP id d16so2988347qcs.0 for ; Mon, 09 Apr 2012 11:34:10 -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=c1LXpi4qR2Oj5zUUFO0P7wHiX4KwZ6IBdLq0QtczHnk=; b=IZ+hAJVCKyQEHpv4XHXW7BxfbdGzmLLWcOt5iV8JZ0fSd9LoBMXahN20FV+eny/xZ2 7dKaLIrLpd9bBDMJWubhQlrzagCFHcMqPkIqdHjQcEtn3Dmts4ApplhG5aKgSPQDWakj QBnlnAtzkyD8t2nGTiJjW7ka9CS5tR920qTT6t74f0TDXSLbLiiq/FjySvFMWsSkliyy XbvaK/YpEWBgiFnH+xjXV04R/jJb2kb504iSbl5tuadnNmUuCU1dY9qAFEa4rW5t2Ef3 lIkYUYeazz6kPQK6pmXSnoBCB6zzFhjNBZGc3PAdJu+9vKZrjqFcGlK3/vIx9A+faPPo 7uhA== Received: by 10.229.135.85 with SMTP id m21mr3292271qct.26.1333996450606; Mon, 09 Apr 2012 11:34:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.135.85 with SMTP id m21mr3292264qct.26.1333996450415; Mon, 09 Apr 2012 11:34:10 -0700 (PDT) Received: by 10.224.188.140 with HTTP; Mon, 9 Apr 2012 11:34:10 -0700 (PDT) Date: Mon, 09 Apr 2012 18:34:00 -0000 Message-ID: Subject: [RFC - Python Scripting] New method gdb.Symtab.blocks_iterator - docs included From: Siva Chandra To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00248c6a7a8e8f036404bd43402b X-System-Of-Record: true X-Gm-Message-State: ALoCoQnX6oDC+N3QadDb2sVdVHwwEE8uEa+rCJBGZbLwDgh5XE4lFgPUi0eC7YelRySAJUi4r7c8egNbu7DQ0VEvcx9ENBeol5f37X9PvF5h2KoUepdJ7fuUA15plM0NI/johLuMw8svSKZF6e1LGaz2Eld5sFWn2A== 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-04/txt/msg00159.txt.bz2 --00248c6a7a8e8f036404bd43402b Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1727 Hello, While the work on Objfile.symtabs (or Objfile.iterator) is pending, I want to complete the API for the exploratory path Objfile => Symtabs => Blocks => Symbols. This patch adds the missing link Symtabs => Blocks. The method Symtab.blocks_iterator returns an iterator to iterate over the scope blocks of a symtab. The patch is attached and the ChangeLog is as follows: Code - 2012-04-09 Siva Chandra Reddy Add a new method gdb.Symtab.blocks_iterator to iterate over the scope blocks of a symbol table. * NEWS (Python scripting): Add entry about the new method. * python/py-symtab.c (symtab_blocks_iterator_object): New iterator type to iterate over the scope blocks of a symtab. (stpy_blocks_iterator): New function which implements the new method. (symtab_blocks_iterator_dealloc): New function which serves as the tp_dealloc function for symtab_blocks_iterator_object. (symtab_blocks_iterator_iter): New function which serves as the tp_iter function for symtab_blocks_iterator_object. (symtab_blocks_iterator_iternext): New function which serves as the tp_iternext function for symtab_blocks_iterator_object. (gdbpy_initialize_symtabs): Add initializations for the new iterator type. Docs - 2012-04-09 Siva Chandra Reddy * gdb.texinfo (Symbol Tables In Python): Add description about the new method gdb.Symtab.blocks_iterator. Tests - 2012-04-09 Siva Chandra Reddy * gdb.python/py-symtab.exp: Add tests to test the new method gdb.Symtab.blocks_iterator. Thanks, Siva Chandra --00248c6a7a8e8f036404bd43402b Content-Type: text/plain; charset=US-ASCII; name="blocks_iterator_patch_v1.txt" Content-Disposition: attachment; filename="blocks_iterator_patch_v1.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h0tumk4k1 Content-length: 17865 SW5kZXg6IE5FV1MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9ORVdTLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjUwNgpkaWZmIC1jIC1wIC1yMS41MDYgTkVXUwoqKiogTkVXUwkyIEFwciAy MDEyIDA3OjMyOjMxIC0wMDAwCTEuNTA2Ci0tLSBORVdTCTkgQXByIDIwMTIg MTc6NTk6NDkgLTAwMDAKKioqKioqKioqKioqKioqCioqKiAzMiwzNyAqKioq Ci0tLSAzMiw0MSAtLS0tCiAgICAqKiBBIG5ldyBtZXRob2QgJ3JlZmVyZW5j ZWRfdmFsdWUnIG9uIGdkYi5WYWx1ZSBvYmplY3RzIHdoaWNoIGNhbgogICAg ICAgZGVyZWZlcmVuY2UgcG9pbnRlciBhcyB3ZWxsIGFzIEMrKyByZWZlcmVu Y2UgdmFsdWVzLgogIAorICAgKiogQSBuZXcgbWV0aG9kICdibG9ja3NfaXRl cmF0b3InIG9uIGdkYi5TeW10YWIgb2JqZWN0cyB3aGljaCByZXR1cm5zCisg ICAgICBhbiBpdGVyYXRvciB0byBpdGVyYXRlIG92ZXIgdGhlIHNjb3BlIGJs b2NrcyAoZ2RiLkJsb2NrIG9iamVjdHMpIG9mCisgICAgICB0aGUgc3ltYm9s IHRhYmxlIChnZGIuU3ltdGFiIG9iamVjdCkuCisgCiAgKiBHREJzZXJ2ZXIg bm93IHN1cHBvcnRzIHN0ZGlvIGNvbm5lY3Rpb25zLgogICAgRS5nLiAoZ2Ri KSB0YXJnZXQgcmVtb3RlIHwgc3NoIG15aG9zdCBnZGJzZXJ2ZXIgLSBoZWxs bwogIApJbmRleDogZG9jL2dkYi50ZXhpbmZvCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZG9jL2dkYi50ZXhp bmZvLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkzOQpkaWZmIC1jIC1wIC1y MS45MzkgZ2RiLnRleGluZm8KKioqIGRvYy9nZGIudGV4aW5mbwkyOCBNYXIg MjAxMiAyMTozMTo0NiAtMDAwMAkxLjkzOQotLS0gZG9jL2dkYi50ZXhpbmZv CTkgQXByIDIwMTIgMTg6MDA6MTIgLTAwMDAKKioqKioqKioqKioqKioqIGlm IGl0IGlzIGludmFsaWQgYXQgdGhlIHRpbWUgdGhlIG1ldGhvZCAKKioqIDI0 MzkyLDI0Mzk3ICoqKioKLS0tIDI0MzkyLDI0NDAzIC0tLS0KICBAZGVmdW4g U3ltdGFiLmZ1bGxuYW1lICgpCiAgUmV0dXJuIHRoZSBzeW1ib2wgdGFibGUn cyBzb3VyY2UgYWJzb2x1dGUgZmlsZSBuYW1lLgogIEBlbmQgZGVmdW4KKyAK KyBAZGVmdW4gU3ltdGFiLmJsb2Nrc19pdGVyYXRvciAoKQorIFJldHVybiBh biBpdGVyYXRvciB3aXRoIHdoaWNoIHRoZSB1c2VyIGNhbiBpdGVyYXRlIG92 ZXIgdGhlIHN5bWJvbAorIHNjb3BlIGJsb2NrcyAoQGNvZGV7Z2RiLkJsb2Nr fSBvYmplY3RzKSBvZiB0aGUgc3ltYm9sIHRhYmxlCisgKEBjb2Rle2dkYi5T eW10YWJ9IG9iamVjdCkuICBAeHJlZntCbG9ja3MgSW4gUHl0aG9ufS4KKyBA ZW5kIGRlZnVuCiAgQGVuZCB0YWJsZQogIAogIEBub2RlIEJyZWFrcG9pbnRz IEluIFB5dGhvbgpJbmRleDogcHl0aG9uL3B5LXN5bXRhYi5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvcHl0 aG9uL3B5LXN5bXRhYi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgKZGlm ZiAtYyAtcCAtcjEuOCBweS1zeW10YWIuYwoqKiogcHl0aG9uL3B5LXN5bXRh Yi5jCTQgSmFuIDIwMTIgMDg6MTc6MjUgLTAwMDAJMS44Ci0tLSBweXRob24v cHktc3ltdGFiLmMJOSBBcHIgMjAxMiAxODowMDoxMyAtMDAwMAoqKioqKioq KioqKioqKioKKioqIDIwLDI1ICoqKioKLS0tIDIwLDI2IC0tLS0KICAjaW5j bHVkZSAiZGVmcy5oIgogICNpbmNsdWRlICJjaGFyc2V0LmgiCiAgI2luY2x1 ZGUgInN5bXRhYi5oIgorICNpbmNsdWRlICJibG9jay5oIgogICNpbmNsdWRl ICJzb3VyY2UuaCIKICAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCiAg I2luY2x1ZGUgIm9iamZpbGVzLmgiCioqKioqKioqKioqKioqKiB0eXBlZGVm IHN0cnVjdCBzdHB5X3N5bXRhYl9vYmplY3QgewoqKiogMzYsNDIgKioqKgot LS0gMzcsNjMgLS0tLQogICAgc3RydWN0IHN0cHlfc3ltdGFiX29iamVjdCAq bmV4dDsKICB9IHN5bXRhYl9vYmplY3Q7CiAgCisgLyogSXRlcmF0b3Igb2Jq ZWN0IHR5cGUgd2hvc2UgaW5zdGFuY2Ugc2VydmVzIGFzIGFuIGl0ZXJhdG9y IG92ZXIgdGhlCisgICAgc2NvcGUgYmxvY2tzIGluIHRoZSB1bmRlcmx5aW5n IHN5bXRhYiBvZiBhIHN5bXRhYl9vYmplY3QuICAqLworIAorIHR5cGVkZWYg c3RydWN0IHN0cHlfYmxvY2tzX2l0ZXJhdG9yX29iamVjdAorIHsKKyAgIFB5 T2JqZWN0X0hFQUQKKyAKKyAgIC8qIEEgcmVmZXJlbmNlIHRvIHRoZSBzeW10 YWJfb2JqZWN0IGZyb20gd2hpY2ggdGhpcyBpdGVyYXRvciB3YXMKKyAgICAg IGNyZWF0ZWQuICAqLworIAorICAgc3ltdGFiX29iamVjdCAqc3ltdGFiX29i ajsKKyAKKyAgIC8qIEluZGV4IG9mIHRoZSBibG9jayBvYmplY3QgY3VycmVu dGx5IHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICBpdGVyYXRvci4gICovCisg CisgICBpbnQgaXRlcl9pbmRleDsKKyB9IHN5bXRhYl9ibG9ja3NfaXRlcmF0 b3Jfb2JqZWN0OworIAogIHN0YXRpYyBQeVR5cGVPYmplY3Qgc3ltdGFiX29i amVjdF90eXBlOworIHN0YXRpYyBQeVR5cGVPYmplY3Qgc3ltdGFiX2Jsb2Nr c19pdGVyYXRvcl9vYmplY3RfdHlwZTsKKyAKICBzdGF0aWMgY29uc3Qgc3Ry dWN0IG9iamZpbGVfZGF0YSAqc3RweV9vYmpmaWxlX2RhdGFfa2V5OwogIAog IC8qIFJlcXVpcmUgYSB2YWxpZCBzeW1ib2wgdGFibGUuICBBbGwgYWNjZXNz IHRvIHN5bXRhYl9vYmplY3QtPnN5bXRhYgoqKioqKioqKioqKioqKiogc3Rw eV9pc192YWxpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0IAoqKiogMTUz LDE1OCAqKioqCi0tLSAxNzQsMjA1IC0tLS0KICAgIFB5X1JFVFVSTl9UUlVF OwogIH0KICAKKyAvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuU3ltdGFiLmJs b2Nrc19pdGVyYXRvciAoc2VsZikgLT4gaXRlcmF0b3IuCisgICAgUmV0dXJu cyBhbiBpdGVyYXRvciB3aXRoIHdoaWNoIGEgdXNlciBjYW4gaXRlcmF0b3Ig b3ZlciB0aGUgc2NvcGUKKyAgICBibG9ja3MgKGdkYi5CbG9jayBvYmplY3Rz KSBvZiB0aGUgdW5kZXJseWluZyBzeW10YWIuICAqLworIAorIHN0YXRpYyBQ eU9iamVjdCAqCisgc3RweV9ibG9ja3NfaXRlcmF0b3IgKFB5T2JqZWN0ICpz ZWxmLCBQeU9iamVjdCAqYXJncykKKyB7CisgICBzdHJ1Y3Qgc3ltdGFiICpz eW10YWIgPSBOVUxMOworICAgc3ltdGFiX2Jsb2Nrc19pdGVyYXRvcl9vYmpl Y3QgKml0ZXIgPSBOVUxMOworICAgc3ltdGFiX29iamVjdCAqc3ltdGFiX29i aiA9IChzeW10YWJfb2JqZWN0ICopIHNlbGY7CisgCisgICBTVFBZX1JFUVVJ UkVfVkFMSUQgKHNlbGYsIHN5bXRhYik7CisgICAvKiBUaGUgaXRlcmF0b3Ig aG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHN5bXRhYl9vYmplY3QuICAqLwor ICAgUHlfSU5DUkVGIChzZWxmKTsKKyAKKyAgIGl0ZXIgPSBQeU9iamVjdF9O ZXcgKHN5bXRhYl9ibG9ja3NfaXRlcmF0b3Jfb2JqZWN0LAorICAgICAgICAg ICAgICAgICAgICAgICAgJnN5bXRhYl9ibG9ja3NfaXRlcmF0b3Jfb2JqZWN0 X3R5cGUpOworICAgaWYgKGl0ZXIpCisgICAgIHsKKyAgICAgICBpdGVyLT5z eW10YWJfb2JqID0gc3ltdGFiX29iajsKKyAgICAgICBpdGVyLT5pdGVyX2lu ZGV4ID0gMDsKKyAgICAgfQorIAorICAgcmV0dXJuIChQeU9iamVjdCAqKSBp dGVyOworIH0KKyAKICBzdGF0aWMgUHlPYmplY3QgKgogIHNhbHB5X3N0ciAo UHlPYmplY3QgKnNlbGYpCiAgewoqKioqKioqKioqKioqKiogc3RweV9kZWFs bG9jIChQeU9iamVjdCAqb2JqKQoqKiogMTkzLDE5OSAqKioqCiAgICBzeW10 YWItPnN5bXRhYiA9IE5VTEw7CiAgfQogIAotIAogIHN0YXRpYyBQeU9iamVj dCAqCiAgc2FscHlfZ2V0X3BjIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xv c3VyZSkKICB7Ci0tLSAyNDAsMjQ1IC0tLS0KKioqKioqKioqKioqKioqIGRl bF9vYmpmaWxlX3NhbCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKKioqIDQz MSw0MzYgKioqKgotLS0gNDc3LDU0MCAtLS0tCiAgICAgIH0KICB9CiAgCisg LyogVGhlIHRwX2RlYWxsb2MgZnVuY3Rpb24gb2Ygc3ltdGFiX2Jsb2Nrc19p dGVyYXRvcl9vYmplY3RfdHlwZS4gICovCisgCisgc3RhdGljIHZvaWQKKyBz eW10YWJfYmxvY2tzX2l0ZXJhdG9yX2RlYWxsb2MgKFB5T2JqZWN0ICpzZWxm KQorIHsKKyAgIHN5bXRhYl9ibG9ja3NfaXRlcmF0b3Jfb2JqZWN0ICppdGVy OworIAorICAgLyogRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN5 bXRhYl9vYmplY3QuICAqLworICAgaWYgKHNlbGYpCisgICAgIHsKKyAgICAg ICBpdGVyID0gKHN5bXRhYl9ibG9ja3NfaXRlcmF0b3Jfb2JqZWN0ICopIHNl bGY7CisgICAgICAgUHlfREVDUkVGICgoUHlPYmplY3QgKikgaXRlci0+c3lt dGFiX29iaik7CisgICAgIH0KKyB9CisgCisgLyogVGhlIHRwX2l0ZXIgZnVu Y3Rpb24gb2Ygc3ltdGFiX2Jsb2Nrc19pdGVyYXRvcl9vYmplY3RfdHlwZS4g ICovCisgCisgc3RhdGljIFB5T2JqZWN0ICoKKyBzeW10YWJfYmxvY2tzX2l0 ZXJhdG9yX2l0ZXIgKFB5T2JqZWN0ICpzZWxmKQorIHsKKyAgIFB5X0lOQ1JF RiAoc2VsZik7CisgICByZXR1cm4gc2VsZjsKKyB9CisgCisgLyogVGhlIHRw X2l0ZXJuZXh0IGZ1bmN0aW9uIG9mIHN5bXRhYl9ibG9ja3NfaXRlcmF0b3Jf b2JqZWN0X3R5cGUuICAqLworIAorIHN0YXRpYyBQeU9iamVjdCAqCisgc3lt dGFiX2Jsb2Nrc19pdGVyYXRvcl9pdGVybmV4dCAoUHlPYmplY3QgKnNlbGYp CisgeworICAgUHlPYmplY3QgKmJsb2NrX29iamVjdDsKKyAgIHN5bXRhYl9i bG9ja3NfaXRlcmF0b3Jfb2JqZWN0ICppdGVyOworICAgc3ltdGFiX29iamVj dCAqc3ltdGFiX29iajsKKyAgIHN0cnVjdCBzeW10YWIgKnN5bXRhYjsKKyAg IHN0cnVjdCBibG9jayAqYmxvY2s7CisgCisgICBpZiAoISBzZWxmKQorICAg ICByZXR1cm4gTlVMTDsKKyAKKyAgIGl0ZXIgPSAoc3ltdGFiX2Jsb2Nrc19p dGVyYXRvcl9vYmplY3QgKikgc2VsZjsKKyAgIHN5bXRhYl9vYmogPSBpdGVy LT5zeW10YWJfb2JqOworICAgU1RQWV9SRVFVSVJFX1ZBTElEICgoUHlPYmpl Y3QgKikgc3ltdGFiX29iaiwgc3ltdGFiKTsgCisgCisgICBpZiAoaXRlci0+ aXRlcl9pbmRleCA+PSBzeW10YWItPmJsb2NrdmVjdG9yLT5uYmxvY2tzKQor ICAgICByZXR1cm4gTlVMTDsKKyAKKyAgIGJsb2NrID0gc3ltdGFiLT5ibG9j a3ZlY3Rvci0+YmxvY2tbaXRlci0+aXRlcl9pbmRleF07CisgICBibG9ja19v YmplY3QgPSBibG9ja190b19ibG9ja19vYmplY3QgKGJsb2NrLCBzeW10YWIt Pm9iamZpbGUpOworICAgaWYgKCEgYmxvY2tfb2JqZWN0KQorICAgICB7Cisg ICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsCisg ICAgICAgICAgICAgICAgICAgICAgICBfKCJVbmFibGUgdG8gZ2V0IHRoZSBu ZXh0IGdkYi5CbG9jayBvYmplY3QuIikpOworICAgICAgIHJldHVybiBOVUxM OworICAgICB9CisgCisgICAoaXRlci0+aXRlcl9pbmRleCkrKzsKKyAgIHJl dHVybiBibG9ja19vYmplY3Q7CisgfQorIAogIHZvaWQKICBnZGJweV9pbml0 aWFsaXplX3N5bXRhYnMgKHZvaWQpCiAgewoqKioqKioqKioqKioqKiogZ2Ri cHlfaW5pdGlhbGl6ZV9zeW10YWJzICh2b2lkKQoqKiogNDQyLDQ0NyAqKioq Ci0tLSA1NDYsNTU1IC0tLS0KICAgIGlmIChQeVR5cGVfUmVhZHkgKCZzYWxf b2JqZWN0X3R5cGUpIDwgMCkKICAgICAgcmV0dXJuOwogIAorICAgc3ltdGFi X2Jsb2Nrc19pdGVyYXRvcl9vYmplY3RfdHlwZS50cF9uZXcgPSBQeVR5cGVf R2VuZXJpY05ldzsKKyAgIGlmIChQeVR5cGVfUmVhZHkgKCZzeW10YWJfYmxv Y2tzX2l0ZXJhdG9yX29iamVjdF90eXBlKSA8IDApCisgICAgIHJldHVybjsK KyAKICAgIC8qIFJlZ2lzdGVyIGFuIG9iamZpbGUgImZyZWUiIGNhbGxiYWNr IHNvIHdlIGNhbiBwcm9wZXJseQogICAgICAgaW52YWxpZGF0ZSBzeW1ib2wg dGFibGVzLCBhbmQgc3ltYm9sIHRhYmxlIGFuZCBsaW5lIGRhdGEKICAgICAg IHN0cnVjdHVyZXMgd2hlbiBhbiBvYmplY3QgZmlsZSB0aGF0IGlzIGFib3V0 IHRvIGJlCioqKioqKioqKioqKioqKiBnZGJweV9pbml0aWFsaXplX3N5bXRh YnMgKHZvaWQpCioqKiA0NTgsNDYzICoqKioKLS0tIDU2Niw1NzUgLS0tLQog ICAgUHlfSU5DUkVGICgmc2FsX29iamVjdF90eXBlKTsKICAgIFB5TW9kdWxl X0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIlN5bXRhYl9hbmRfbGluZSIsCiAg CQkgICAgICAoUHlPYmplY3QgKikgJnNhbF9vYmplY3RfdHlwZSk7CisgCisg ICBQeV9JTkNSRUYgKCZzeW10YWJfYmxvY2tzX2l0ZXJhdG9yX29iamVjdF90 eXBlKTsKKyAgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIkJs b2NrSXRlcmF0b3IiLAorIAkJICAgICAgKFB5T2JqZWN0ICopICZzeW10YWJf YmxvY2tzX2l0ZXJhdG9yX29iamVjdF90eXBlKTsKICB9CiAgCiAgDAoqKioq KioqKioqKioqKiogUmV0dXJuIHRydWUgaWYgdGhpcyBzeW1ib2wgdGFibGUg aXMgdmFsaQoqKiogNDc3LDQ4MiAqKioqCi0tLSA1ODksNTk4IC0tLS0KICAg IHsgImZ1bGxuYW1lIiwgc3RweV9mdWxsbmFtZSwgTUVUSF9OT0FSR1MsCiAg ICAgICJmdWxsbmFtZSAoKSAtPiBTdHJpbmcuXG5cCiAgUmV0dXJuIHRoZSBz eW10YWIncyBmdWxsIHNvdXJjZSBmaWxlbmFtZS4iIH0sCisgICB7ICJibG9j a3NfaXRlcmF0b3IiLCBzdHB5X2Jsb2Nrc19pdGVyYXRvciwgTUVUSF9OT0FS R1MsCisgICAgICJibG9ja3NfaXRlcmF0b3IgKCkgLT4gaXRlcmF0b3IuXG5c CisgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHNjb3BlIGJsb2NrcyAo Z2RiLkJsb2NrIG9iamVjdHMpIG9mIHRoZVxuXAorIHVuZGVybHlpbmcgU3lt dGFiLiIgfSwKICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KICB9OwogIAoq KioqKioqKioqKioqKiogc3RhdGljIFB5VHlwZU9iamVjdCBzYWxfb2JqZWN0 X3R5cGUgPSB7CioqKiA1NjIsNTY0ICoqKioKLS0tIDY3OCw3MTEgLS0tLQog ICAgMCwJCQkJICAvKnRwX21lbWJlcnMgKi8KICAgIHNhbF9vYmplY3RfZ2V0 c2V0CQkgIC8qdHBfZ2V0c2V0ICovCiAgfTsKKyAKKyBzdGF0aWMgUHlUeXBl T2JqZWN0IHN5bXRhYl9ibG9ja3NfaXRlcmF0b3Jfb2JqZWN0X3R5cGUgPSB7 CisgICBQeU9iamVjdF9IRUFEX0lOSVQgKE5VTEwpCisgICAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qb2Jfc2l6ZSovCisgICAiZ2RiLkJs b2NrSXRlcmF0b3IiLCAgICAgICAgICAgIC8qdHBfbmFtZSovCisgICBzaXpl b2YgKHN5bXRhYl9ibG9ja3NfaXRlcmF0b3Jfb2JqZWN0KSwgIC8qdHBfYmFz aWNzaXplKi8KKyAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Lyp0cF9pdGVtc2l6ZSovCisgICBzeW10YWJfYmxvY2tzX2l0ZXJhdG9yX2Rl YWxsb2MsIC8qdHBfZGVhbGxvYyovCisgICAwLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgMCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgMCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUqLwor ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIq LworICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Fz X251bWJlciovCisgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qdHBfYXNfc2VxdWVuY2UqLworICAgMCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KKyAgIDAsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgIDAsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLworICAgMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8K KyAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRh dHRybyovCisgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q dHBfYXNfYnVmZmVyKi8KKyAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQ RkxBR1NfSEFWRV9JVEVSLCAgLyp0cF9mbGFncyovCisgICAiSXRlcmF0b3Ig b3ZlciBHREIgYmxvY2tzIiwgICAgIC8qdHBfZG9jICovCisgICAwLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UgKi8KKyAg IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciAq LworICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jp Y2hjb21wYXJlICovCisgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgIHN5bXRhYl9ibG9ja3Nf aXRlcmF0b3JfaXRlciwgICAgLyp0cF9pdGVyICovCisgICBzeW10YWJfYmxv Y2tzX2l0ZXJhdG9yX2l0ZXJuZXh0LCAgLyp0cF9pdGVybmV4dCAqLworIH07 CkluZGV4OiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zeW10YWIuZXhwCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc3ltdGFiLmV4cCx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS44CmRpZmYgLWMgLXAgLXIxLjggcHktc3ltdGFi LmV4cAoqKiogdGVzdHN1aXRlL2dkYi5weXRob24vcHktc3ltdGFiLmV4cAk3 IEZlYiAyMDEyIDE5OjQyOjI3IC0wMDAwCTEuOAotLS0gdGVzdHN1aXRlL2dk Yi5weXRob24vcHktc3ltdGFiLmV4cAk5IEFwciAyMDEyIDE4OjAwOjE0IC0w MDAwCioqKioqKioqKioqKioqKiBsb2FkX2xpYiBnZGItcHl0aG9uLmV4cAoq KiogMjEsMzcgKioqKgogIHNldCB0ZXN0ZmlsZSAicHktc3ltYm9sIgogIHNl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICBzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CiEgaWYgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0i IGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CiEgICAgIHVudGVzdGVk ICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCiAgICAgIHJldHVybiAt MQogIH0KICAKLSAjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0gZ2RiX2V4 aXQKLSBnZGJfc3RhcnQKLSBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKLSBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gCiAgIyBTa2lwIGFs bCB0ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgog IGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQogIAot LS0gMjEsMzEgLS0tLQogIHNldCB0ZXN0ZmlsZSAicHktc3ltYm9sIgogIHNl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICBzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CiEgCiEgaWYgeyBbcHJlcGFyZV9m b3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNm aWxlfV0gfSB7CiAgICAgIHJldHVybiAtMQogIH0KICAKICAjIFNraXAgYWxs IHRlc3RzIGlmIFB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IGVuYWJsZWQuCiAg aWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9CiAgCioq KioqKioqKioqKioqKiBpZiAhW3J1bnRvX21haW5dIHRoZW4gewoqKiogNDEs NTQgKioqKgogIH0KICAKICBnbG9iYWwgaGV4IGRlY2ltYWwKLSAKLSAjIFNl dHVwIGFuZCBnZXQgdGhlIHN5bWJvbCB0YWJsZS4KICBzZXQgbGluZV9ubyBb Z2RiX2dldF9saW5lX251bWJlciAiQmxvY2sgYnJlYWsgaGVyZS4iXQohIGdk Yl9icmVha3BvaW50ICRsaW5lX25vCiEgZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIkJsb2NrIGJyZWFrIGhlcmUuIgohIGdkYl9weV90ZXN0X3NpbGVu dF9jbWQgInB5dGhvbiBmcmFtZSA9IGdkYi5zZWxlY3RlZF9mcmFtZSgpIiAi R2V0IEZyYW1lIiAwCiEgZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9u IHNhbCA9IGZyYW1lLmZpbmRfc2FsKCkiICJHZXQgYmxvY2siIDAKISBnZGJf cHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gc3ltdGFiID0gc2FsLnN5bXRh YiIgIkdldCBibG9jayIgMAogIAogICMgVGVzdCBzYWwuCiAgZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCBzYWwuc3ltdGFiIiAiLipnZGIucHl0aG9uL3B5LXN5 bWJvbC5jLioiICJUZXN0IHN5bXRhYiIKLS0tIDM1LDU2IC0tLS0KICB9CiAg CiAgZ2xvYmFsIGhleCBkZWNpbWFsCiAgc2V0IGxpbmVfbm8gW2dkYl9nZXRf bGluZV9udW1iZXIgIkJsb2NrIGJyZWFrIGhlcmUuIl0KISAKISAjIFByb2Mg dG8gc2V0dXAgYW5kIGdldCB0aGUgc3ltYm9sIHRhYmxlIGluIHRoZSBQeXRo b24gZW52aXJvbm1lbnQuCiEgcHJvYyBzZXR1cF9weXRob25fZW52IHsgbGlu ZV9ubyB9IHsKISAgICAgZ2RiX2JyZWFrcG9pbnQgJGxpbmVfbm8KISAgICAg Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkJsb2NrIGJyZWFrIGhlcmUu IgohICAgICBnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZGVmIGZ1 bmNfc3ltYm9sKGJsb2NrKTogcmV0dXJuIGJsb2NrLmZ1bmN0aW9uIiAiRGVm aW5lIGEgZnVuYyB0byBnZXQgdGhlIGZ1bmN0aW9uIHN5bWJvbHMiICIwIgoh ICAgICBnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZnJhbWUgPSBn ZGIuc2VsZWN0ZWRfZnJhbWUoKSIgIkdldCBGcmFtZSIgMAohICAgICBnZGJf cHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gc2FsID0gZnJhbWUuZmluZF9z YWwoKSIgIkdldCBibG9jayIgMAohICAgICBnZGJfcHlfdGVzdF9zaWxlbnRf Y21kICJweXRob24gc3ltdGFiID0gc2FsLnN5bXRhYiIgIkdldCBibG9jayIg MAohICAgICBnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gYmxvY2tf bGlzdCA9IGxpc3Qoc3ltdGFiLmJsb2Nrc19pdGVyYXRvcigpKSIgIkNyZWF0 ZSBhIGxpc3Qgb2YgYmxvY2tzIiAwCiEgICAgIGdkYl9weV90ZXN0X3NpbGVu dF9jbWQgInB5dGhvbiBmdW5jX3N5bWJvbHMgPSBtYXAoZnVuY19zeW1ib2ws IGJsb2NrX2xpc3QpIiAiQ3JlYXRlIGEgbGlzdCBvZiBmdW5jdGlvbiBzeW1i b2xzIiAwCiEgICAgIGdkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBm dW5jX25hbWVzID0gbWFwKHN0ciwgZnVuY19zeW1ib2xzKSIgIkNyZWF0ZSBh IGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMiIDAKISB9CiEgCiEgc2V0dXBfcHl0 aG9uX2VudiAkbGluZV9ubwogIAogICMgVGVzdCBzYWwuCiAgZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCBzYWwuc3ltdGFiIiAiLipnZGIucHl0aG9uL3B5LXN5 bWJvbC5jLioiICJUZXN0IHN5bXRhYiIKKioqKioqKioqKioqKioqIGdkYl90 ZXN0ICJweXRob24gcHJpbnQgc3ltdGFiLmZpbGVuYW1lIiAKKioqIDYxLDY5 ICoqKioKLS0tIDYzLDkwIC0tLS0KICBnZGJfdGVzdCAicHl0aG9uIHByaW50 IHN5bXRhYi5vYmpmaWxlIiAiPGdkYi5PYmpmaWxlIG9iamVjdCBhdCAke2hl eH0+IiAiVGVzdCBzeW10YWIub2JqZmlsZSIKICBnZGJfdGVzdCAicHl0aG9u IHByaW50IHN5bXRhYi5mdWxsbmFtZSgpIiAidGVzdHN1aXRlL2dkYi5weXRo b24vcHktc3ltYm9sLmMuKiIgIlRlc3Qgc3ltdGFiLmZ1bGxuYW1lIgogIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgc3ltdGFiLmlzX3ZhbGlkKCkiICJUcnVl IiAiVGVzdCBzeW10YWIuaXNfdmFsaWQoKSIKKyBnZGJfdGVzdCAicHl0aG9u IHByaW50ICdmdW5jJyBpbiBmdW5jX25hbWVzIiAiVHJ1ZSIgIlRlc3QgdGhh dCB0aGVyZSBpcyBhIHN5bWJvbCBmb3IgdGhlIGZ1bmN0aW9uIGZ1bmMiCisg Z2RiX3Rlc3QgInB5dGhvbiBwcmludCAnbWFpbicgaW4gZnVuY19uYW1lcyIg IlRydWUiICJUZXN0IHRoYXQgdGhlcmUgaXMgYSBzeW1ib2wgZm9yIHRoZSBm dW5jdGlvbiBtYWluIgorICAgCiAgCiAgIyBUZXN0IGlzX3ZhbGlkIHdoZW4g dGhlIG9iamZpbGUgaXMgdW5sb2FkZWQuICBUaGlzIG11c3QgYmUgdGhlIGxh c3QKICAjIHRlc3QgYXMgaXQgdW5sb2FkcyB0aGUgb2JqZWN0IGZpbGUgaW4g R0RCLgogIGdkYl91bmxvYWQKICBnZGJfdGVzdCAicHl0aG9uIHByaW50IHNh bC5pc192YWxpZCgpIiAiRmFsc2UiICJUZXN0IHNhbC5pc192YWxpZCIKICBn ZGJfdGVzdCAicHl0aG9uIHByaW50IHN5bXRhYi5pc192YWxpZCgpIiAiRmFs c2UiICJUZXN0IHN5bXRhYi5pc192YWxpZCgpIgorIAorICMgQ29tcGlsZSB0 aGUgc291cmNlIGZpbGUgYXMgYSBDKysgZmlsZSBhbmQgdGVzdCBhZ2Fpbi4K KyBpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRl c3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBjKyt9XSB9IHsKKyAgICAgcmV0dXJu IC0xCisgfQorIAorIGlmICFbcnVudG9fbWFpbl0geworICAgIHJldHVybiAt MQorIH0KKyAKKyBzZXR1cF9weXRob25fZW52ICRsaW5lX25vCisgCisgZ2Ri X3Rlc3QgInB5dGhvbiBwcmludCAnZnVuYyhpbnQpJyBpbiBmdW5jX25hbWVz IiAiVHJ1ZSIgIlRlc3QgdGhhdCB0aGVyZSBpcyBhIHN5bWJvbCBmb3IgdGhl IGZ1bmN0aW9uIGZ1bmMiCisgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAnbWFp bihpbnQsIGNoYXIqKiknIGluIGZ1bmNfbmFtZXMiICJUcnVlIiAiVGVzdCB0 aGF0IHRoZXJlIGlzIGEgc3ltYm9sIGZvciB0aGUgZnVuY3Rpb24gbWFpbiIK KyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdTaW1wbGVDbGFzczo6c2V0aShp bnQpJyBpbiBmdW5jX25hbWVzIiAiVHJ1ZSIgIlRlc3QgdGhhdCB0aGUgZnVu Y3Rpb24gU2ltcGxlQ2xhc3M6OnNldGkoaW50KSBpcyBwcmVzZW50IgorIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgJ1NpbXBsZUNsYXNzOjp2YWx1ZW9maSgp JyBpbiBmdW5jX25hbWVzIiAiVHJ1ZSIgIlRlc3QgdGhhdCB0aGUgZnVuY3Rp b24gU2ltcGxlQ2xhc3M6OnZhbHVlb2ZpKCkgaXMgcHJlc2VudCIK --00248c6a7a8e8f036404bd43402b--