From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 531 invoked by alias); 27 Aug 2014 21:39:06 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 515 invoked by uid 89); 27 Aug 2014 21:39:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ob0-f171.google.com Received: from mail-ob0-f171.google.com (HELO mail-ob0-f171.google.com) (209.85.214.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 27 Aug 2014 21:39:03 +0000 Received: by mail-ob0-f171.google.com with SMTP id wm4so705893obc.30 for ; Wed, 27 Aug 2014 14:39:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to:cc :content-type; bh=kdhg7o2Hl74ZJZ6+t7Fe/TlXMvbWcb7Al2GXzG0nOKg=; b=SQk4cCNxra3AhdYDswr1g0QGG0p6Kw640u7bPm7ReDC8iFPVd1+bKQVQUVgx+vxDag infvUDADegRG5XdLET5F0hTT1GpvOZxPfWxEeb4MNh05z8DM0IdEshTEUrJFdgjKgRKQ K8UtCZ+TgQnuuR0vYm6JeWa+ryMfqJyXXP/MrRmNJOmj2Eg/ux2c16a/HZLAPs+8UNiM ZAf/oeuR4+c0BGD/zBdpXqISobXerIMZowIUykZ0LYPwC1p/nqERCL6X04FWPWWPkp3J 1Nwa/hTXctMmrEQmqrRLvY8MJEDiWpOcz9Wz8rXFK9AXAVGtgrm5rUSSCpMCIn7BKGPH zuqw== X-Gm-Message-State: ALoCoQnWIMKsdmCySwyrzg9+8NxHboFPJF3l2qluARXsN+PFVueEJHzsVXcFOLZh4sY0r/IRuj+D MIME-Version: 1.0 X-Received: by 10.182.52.165 with SMTP id u5mr36567384obo.30.1409175541491; Wed, 27 Aug 2014 14:39:01 -0700 (PDT) Received: by 10.202.225.135 with HTTP; Wed, 27 Aug 2014 14:39:01 -0700 (PDT) Date: Wed, 27 Aug 2014 21:39:00 -0000 Message-ID: Subject: [PATCH libstdc++ v5] - Add xmethods for std::vector and std::unique_ptr From: Siva Chandra To: gcc-patches , "libstdc++" Cc: Jonathan Wakely , Doug Evans Content-Type: multipart/mixed; boundary=089e0158aaa693da030501a33fbb X-IsSubscribed: yes X-SW-Source: 2014-08/txt/msg02516.txt.bz2 --089e0158aaa693da030501a33fbb Content-Type: text/plain; charset=UTF-8 Content-length: 1979 The attached patch addresses Jonathan Wakely's comments on the previous version of the patch: https://gcc.gnu.org/ml/gcc-patches/2014-08/msg02426.html On Tue, Aug 26, 2014 at 10:58 AM, Jonathan Wakely wrote: > Shouldn't there be a change to python/Makefile.am so that xmethods.py > gets installed alongside printers.py? Otherwise you can use these new > xmethods in the libstdc++ testssuite, but they're not available to > users. Ah, sorry I missed that. Added in the attached patch. > I'd also expect something to call the register_libstdcxx_xmethods > function automatically, as in the attached patch, although this > doesn't work for me. gdb.xmethod is a module. Hence, hasattr(gdb, 'xmethod') in your suggestion will not return True. I have modified this in the attached patch to something which should work. I had something in hook.in in my very first patch but Tom Tromey said it was not required anymore: https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02405.html > How am I expected to use these xmethods? If you use the * operator on a unique_ptr or [] operator on a vector in GDB, the xmethods will be called. Without the xmethods, GDB will print something like "No matching method for unique_ptr<...>::operator* found" if those operators were not used in the source. ChangeLog: 2014-08-27 Siva Chandra Reddy * python/hook.in: Load the xmethods. * python/Makefile.am (nobase_python_DATA): Add xmethods.py. * python/Makefile.in: Regenerated. * python/libstdcxx/v6/xmethods.py: New file. * testsuite/lib/gdb-test.exp (gdb_version_check_xmethods): New function. (gdb-test): New optional argument LOAD_XMETHODS. Load xmethods python script if LOAD_XMETHODS is true. * testsuite/libstdc++-xmethods/unique_ptr.cc: New file. * testsuite/libstdc++-xmethods/vector.cc: New file. * testsuite/libstdc++-xmethods/xmethods.exp: New file. --089e0158aaa693da030501a33fbb Content-Type: text/plain; charset=US-ASCII; name="libstdcxx-xmethods-v5.txt" Content-Disposition: attachment; filename="libstdcxx-xmethods-v5.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hzd60ecl1 Content-length: 16442 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9weXRob24vTWFrZWZpbGUuYW0g Yi9saWJzdGRjKystdjMvcHl0aG9uL01ha2VmaWxlLmFtCmluZGV4IGFjNzM0 MWEuLmMzNGM4NjAgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9weXRob24v TWFrZWZpbGUuYW0KKysrIGIvbGlic3RkYysrLXYzL3B5dGhvbi9NYWtlZmls ZS5hbQpAQCAtMzMsNiArMzMsNyBAQCBhbGwtbG9jYWw6IGdkYi5weQogCiBu b2Jhc2VfcHl0aG9uX0RBVEEgPSBcCiAgICAgbGlic3RkY3h4L3Y2L3ByaW50 ZXJzLnB5IFwKKyAgICBsaWJzdGRjeHgvdjYveG1ldGhvZHMucHkgXAogICAg IGxpYnN0ZGN4eC92Ni9fX2luaXRfXy5weSBcCiAgICAgbGlic3RkY3h4L19f aW5pdF9fLnB5CiAKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9weXRob24v TWFrZWZpbGUuaW4gYi9saWJzdGRjKystdjMvcHl0aG9uL01ha2VmaWxlLmlu CmluZGV4IDIxZDc0YTkwLi43ZDBjOGFjIDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvcHl0aG9uL01ha2VmaWxlLmluCisrKyBiL2xpYnN0ZGMrKy12My9w eXRob24vTWFrZWZpbGUuaW4KQEAgLTMxNiw2ICszMTYsNyBAQCBBTV9DUFBG TEFHUyA9ICQoR0xJQkNYWF9JTkNMVURFUykKIEBFTkFCTEVfUFlUSE9ORElS X1RSVUVAcHl0aG9uZGlyID0gJChwcmVmaXgpLyQocHl0aG9uX21vZF9kaXIp CiBub2Jhc2VfcHl0aG9uX0RBVEEgPSBcCiAgICAgbGlic3RkY3h4L3Y2L3By aW50ZXJzLnB5IFwKKyAgICBsaWJzdGRjeHgvdjYveG1ldGhvZHMucHkgXAog ICAgIGxpYnN0ZGN4eC92Ni9fX2luaXRfXy5weSBcCiAgICAgbGlic3RkY3h4 L19faW5pdF9fLnB5CiAKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9weXRo b24vaG9vay5pbiBiL2xpYnN0ZGMrKy12My9weXRob24vaG9vay5pbgppbmRl eCAzNjIwNTIzLi5hZWIxY2RiIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMv cHl0aG9uL2hvb2suaW4KKysrIGIvbGlic3RkYysrLXYzL3B5dGhvbi9ob29r LmluCkBAIC01OCwzICs1OCwxNSBAQCBpZiBnZGIuY3VycmVudF9vYmpmaWxl ICgpIGlzIG5vdCBOb25lOgogIyBMb2FkIHRoZSBwcmV0dHktcHJpbnRlcnMu CiBmcm9tIGxpYnN0ZGN4eC52Ni5wcmludGVycyBpbXBvcnQgcmVnaXN0ZXJf bGlic3RkY3h4X3ByaW50ZXJzCiByZWdpc3Rlcl9saWJzdGRjeHhfcHJpbnRl cnMgKGdkYi5jdXJyZW50X29iamZpbGUgKCkpCisKKyMgTG9hZCB0aGUgeG1l dGhvZHMgaWYgR0RCIHN1cHBvcnRzIHRoZW0uCitkZWYgZ2RiX2hhc194bWV0 aG9kcygpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IGdkYi54bWV0aG9k CisgICAgICAgIHJldHVybiBUcnVlCisgICAgZXhjZXB0IEltcG9ydEVycm9y OgorICAgICAgICByZXR1cm4gRmFsc2UKKworaWYgZ2RiX2hhc194bWV0aG9k cygpOgorICAgIGZyb20gbGlic3RkY3h4LnY2LnhtZXRob2RzIGltcG9ydCBy ZWdpc3Rlcl9saWJzdGRjeHhfeG1ldGhvZHMKKyAgICByZWdpc3Rlcl9saWJz dGRjeHhfeG1ldGhvZHMgKGdkYi5jdXJyZW50X29iamZpbGUgKCkpCmRpZmYg LS1naXQgYS9saWJzdGRjKystdjMvcHl0aG9uL2xpYnN0ZGN4eC92Ni94bWV0 aG9kcy5weSBiL2xpYnN0ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3ht ZXRob2RzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmYyMGY0MTEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvcHl0 aG9uL2xpYnN0ZGN4eC92Ni94bWV0aG9kcy5weQpAQCAtMCwwICsxLDEwMyBA QAorIyBYbWV0aG9kcyBmb3IgbGlic3RjKysuCisKKyMgQ29weXJpZ2h0IChD KSAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorCitpbXBvcnQgZ2RiCitpbXBvcnQgZ2RiLnhtZXRob2QK K2ltcG9ydCByZQorCittYXRjaGVyX25hbWVfcHJlZml4ID0gJ2xpYnN0ZGMr Kzo6JworCisjIFhtZXRob2RzIGZvciBzdGQ6OnZlY3RvcgorCitjbGFzcyBW ZWN0b3JTaXplV29ya2VyKGdkYi54bWV0aG9kLlhNZXRob2RXb3JrZXIpOgor ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5uYW1lID0g J3NpemUnCisgICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUKKworICAgIGRl ZiBnZXRfYXJnX3R5cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gTm9uZQor CisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iaik6CisgICAgICAgIHJldHVy biBvYmpbJ19NX2ltcGwnXVsnX01fZmluaXNoJ10gLSBvYmpbJ19NX2ltcGwn XVsnX01fc3RhcnQnXQorCitjbGFzcyBWZWN0b3JTdWJzY3JpcHRXb3JrZXIo Z2RiLnhtZXRob2QuWE1ldGhvZFdvcmtlcik6CisgICAgZGVmIF9faW5pdF9f KHNlbGYpOgorICAgICAgICBzZWxmLm5hbWUgPSAnb3BlcmF0b3JbXScKKyAg ICAgICAgc2VsZi5lbmFibGVkID0gVHJ1ZQorCisgICAgZGVmIGdldF9hcmdf dHlwZXMoc2VsZik6CisgICAgICAgIHJldHVybiBnZGIubG9va3VwX3R5cGUo J3N0ZDo6c2l6ZV90JykKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmos IHN1YnNjcmlwdCk6CisgICAgICAgIHJldHVybiBvYmpbJ19NX2ltcGwnXVsn X01fc3RhcnQnXVtzdWJzY3JpcHRdCisKK2NsYXNzIFZlY3Rvck1ldGhvZHNN YXRjaGVyKGdkYi54bWV0aG9kLlhNZXRob2RNYXRjaGVyKToKKyAgICBkZWYg X19pbml0X18oc2VsZik6CisgICAgICAgIGdkYi54bWV0aG9kLlhNZXRob2RN YXRjaGVyLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXJfbmFtZV9wcmVmaXggKyAn dmVjdG9yJykKKyAgICAgICAgc2VsZi5fc3Vic2NyaXB0X3dvcmtlciA9IFZl Y3RvclN1YnNjcmlwdFdvcmtlcigpCisgICAgICAgIHNlbGYuX3NpemVfd29y a2VyID0gVmVjdG9yU2l6ZVdvcmtlcigpCisgICAgICAgIHNlbGYubWV0aG9k cyA9IFtzZWxmLl9zdWJzY3JpcHRfd29ya2VyLCBzZWxmLl9zaXplX3dvcmtl cl0KKworICAgIGRlZiBtYXRjaChzZWxmLCBjbGFzc190eXBlLCBtZXRob2Rf bmFtZSk6CisgICAgICAgIGlmIG5vdCByZS5tYXRjaCgnXnN0ZDo6dmVjdG9y PC4qPiQnLCBjbGFzc190eXBlLnRhZyk6CisgICAgICAgICAgICByZXR1cm4g Tm9uZQorICAgICAgICBpZiBtZXRob2RfbmFtZSA9PSAnb3BlcmF0b3JbXScg YW5kIHNlbGYuX3N1YnNjcmlwdF93b3JrZXIuZW5hYmxlZDoKKyAgICAgICAg ICAgIHJldHVybiBzZWxmLl9zdWJzY3JpcHRfd29ya2VyCisgICAgICAgIGVs aWYgbWV0aG9kX25hbWUgPT0gJ3NpemUnIGFuZCBzZWxmLl9zaXplX3dvcmtl ci5lbmFibGVkOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NpemVfd29y a2VyCisKKyMgWG1ldGhvZHMgZm9yIHN0ZDo6dW5pcXVlX3B0cgorCitjbGFz cyBVbmlxdWVQdHJHZXRXb3JrZXIoZ2RiLnhtZXRob2QuWE1ldGhvZFdvcmtl cik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLm5h bWUgPSAnZ2V0JworICAgICAgICBzZWxmLmVuYWJsZWQgPSBUcnVlCisKKyAg ICBkZWYgZ2V0X2FyZ190eXBlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIE5v bmUKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgorICAgICAgICBy ZXR1cm4gb2JqWydfTV90J11bJ19NX2hlYWRfaW1wbCddCisKK2NsYXNzIFVu aXF1ZVB0ckRlcmVmV29ya2VyKFVuaXF1ZVB0ckdldFdvcmtlcik6CisgICAg ZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBVbmlxdWVQdHJHZXRXb3Jr ZXIuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5uYW1lID0gJ29wZXJh dG9yKicKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgorICAgICAg ICByZXR1cm4gVW5pcXVlUHRyR2V0V29ya2VyLl9fY2FsbF9fKHNlbGYsIG9i aikuZGVyZWZlcmVuY2UoKQorCitjbGFzcyBVbmlxdWVQdHJNZXRob2RzTWF0 Y2hlcihnZGIueG1ldGhvZC5YTWV0aG9kTWF0Y2hlcik6CisgICAgZGVmIF9f aW5pdF9fKHNlbGYpOgorICAgICAgICBnZGIueG1ldGhvZC5YTWV0aG9kTWF0 Y2hlci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtYXRjaGVyX25hbWVfcHJlZml4ICsgJ3Vu aXF1ZV9wdHInKQorICAgICAgICBzZWxmLl9nZXRfd29ya2VyID0gVW5pcXVl UHRyR2V0V29ya2VyKCkKKyAgICAgICAgc2VsZi5fZGVyZWZfd29ya2VyID0g VW5pcXVlUHRyRGVyZWZXb3JrZXIoKQorICAgICAgICBzZWxmLm1ldGhvZHMg PSBbc2VsZi5fZ2V0X3dvcmtlciwgc2VsZi5fZGVyZWZfd29ya2VyXQorCisg ICAgZGVmIG1hdGNoKHNlbGYsIGNsYXNzX3R5cGUsIG1ldGhvZF9uYW1lKToK KyAgICAgICAgaWYgbm90IHJlLm1hdGNoKCdec3RkOjp1bmlxdWVfcHRyPC4q PiQnLCBjbGFzc190eXBlLnRhZyk6CisgICAgICAgICAgICByZXR1cm4gTm9u ZQorICAgICAgICBpZiBtZXRob2RfbmFtZSA9PSAnb3BlcmF0b3IqJyBhbmQg c2VsZi5fZGVyZWZfd29ya2VyLmVuYWJsZWQ6CisgICAgICAgICAgICByZXR1 cm4gc2VsZi5fZGVyZWZfd29ya2VyCisgICAgICAgIGVsaWYgbWV0aG9kX25h bWUgPT0gJ2dldCcgYW5kIHNlbGYuX2dldF93b3JrZXIuZW5hYmxlZDoKKyAg ICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfd29ya2VyCisMCitkZWYgcmVn aXN0ZXJfbGlic3RkY3h4X3htZXRob2RzKGxvY3VzKToKKyAgICBnZGIueG1l dGhvZC5yZWdpc3Rlcl94bWV0aG9kX21hdGNoZXIobG9jdXMsIFZlY3Rvck1l dGhvZHNNYXRjaGVyKCkpCisgICAgZ2RiLnhtZXRob2QucmVnaXN0ZXJfeG1l dGhvZF9tYXRjaGVyKGxvY3VzLCBVbmlxdWVQdHJNZXRob2RzTWF0Y2hlcigp KQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9saWIvZ2Ri LXRlc3QuZXhwIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9saWIvZ2RiLXRl c3QuZXhwCmluZGV4IDljYjZlY2YuLjFhNjgyMTcgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My90ZXN0c3VpdGUvbGliL2dkYi10ZXN0LmV4cAorKysgYi9s aWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYi9nZGItdGVzdC5leHAKQEAgLTc5 LDcgKzc5LDcgQEAgcHJvYyB3aGF0aXMtdGVzdCB7dmFyIHJlc3VsdH0gewog IwogIyBBcmd1bWVudCAwIGlzIHRoZSBtYXJrZXIgb24gd2hpY2ggdG8gcHV0 IGEgYnJlYWtwb2ludAogIyBBcmd1bWVudCAyIGhhbmRsZXMgZXhwZWN0ZWQg ZmFpbHVyZXMgYW5kIHRoZSBsaWtlCi1wcm9jIGdkYi10ZXN0IHsgbWFya2Vy IHtzZWxlY3RvciB7fX0gfSB7Citwcm9jIGdkYi10ZXN0IHsgbWFya2VyIHtz ZWxlY3RvciB7fX0ge2xvYWRfeG1ldGhvZHMgMH0gfSB7CiAgICAgaWYgeyAh W2lzbmF0aXZlXSB8fCBbaXNfcmVtb3RlIHRhcmdldF0gfSB7IHJldHVybiB9 CiAKICAgICBpZiB7W3N0cmluZyBsZW5ndGggJHNlbGVjdG9yXSA+IDB9IHsK QEAgLTExMSw3ICsxMTEsOCBAQCBwcm9jIGdkYi10ZXN0IHsgbWFya2VyIHtz ZWxlY3RvciB7fX0gfSB7CiAgICAgc2V0IGNtZF9maWxlICJbZmlsZSByb290 bmFtZSBbZmlsZSB0YWlsICRwcm9nXV0uZ2RiIgogCiAgICAgZ2xvYmFsIHNy Y2RpcgotICAgIHNldCBweWNvZGUgW2ZpbGUgam9pbiAkc3JjZGlyIC4uIHB5 dGhvbiBsaWJzdGRjeHggdjYgcHJpbnRlcnMucHldCisgICAgc2V0IHByaW50 ZXJfY29kZSBbZmlsZSBqb2luICRzcmNkaXIgLi4gcHl0aG9uIGxpYnN0ZGN4 eCB2NiBwcmludGVycy5weV0KKyAgICBzZXQgeG1ldGhvZF9jb2RlIFtmaWxl IGpvaW4gJHNyY2RpciAuLiBweXRob24gbGlic3RkY3h4IHY2IHhtZXRob2Rz LnB5XQogCiAgICAgZ2xvYmFsIGdkYl90ZXN0cwogCkBAIC0xMjEsOCArMTIy LDEzIEBAIHByb2MgZ2RiLXRlc3QgeyBtYXJrZXIge3NlbGVjdG9yIHt9fSB9 IHsKICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGRpc2FibGVkIGF1dG8tbG9hZCwg aXQncyBzYWZlIHRvIHNldCB0aGUgdGFyZ2V0IGZpbGUKICAgICBwdXRzICRm ZCAiZmlsZSAuLyRvdXRwdXRfZmlsZSIKICAgICAjIExvYWQgJiByZWdpc3Rl ciAqb3VyKiBjb3B5IG9mIHRoZSBwcmV0dHktcHJpbnRlcnMKLSAgICBwdXRz ICRmZCAic291cmNlICRweWNvZGUiCisgICAgcHV0cyAkZmQgInNvdXJjZSAk cHJpbnRlcl9jb2RlIgogICAgIHB1dHMgJGZkICJweXRob24gcmVnaXN0ZXJf bGlic3RkY3h4X3ByaW50ZXJzKE5vbmUpIgorICAgIGlmIHsgJGxvYWRfeG1l dGhvZHMgfSB7CisJIyBMb2FkIGEmIHJlZ2lzdGVyIHhtZXRob2RzLgorCXB1 dHMgJGZkICJzb3VyY2UgJHhtZXRob2RfY29kZSIKKwlwdXRzICRmZCAicHl0 aG9uIHJlZ2lzdGVyX2xpYnN0ZGN4eF94bWV0aG9kcyhOb25lKSIKKyAgICB9 CiAgICAgIyBBbmQgc3RhcnQgdGhlIHByb2dyYW0KICAgICBwdXRzICRmZCAi YnJlYWsgJGxpbmUiCiAgICAgcHV0cyAkZmQgInJ1biIKQEAgLTI2MiwzICsy NjgsMTIgQEAgcHJvYyBnZGJfdmVyc2lvbl9jaGVjayB7fSB7CiAgICAgcmV0 dXJuIFtnZGJfYmF0Y2hfY2hlY2sgInB5dGhvbiBwcmludChnZGIubG9va3Vw X2dsb2JhbF9zeW1ib2wpIiBcCiAJICAgICAgIjxidWlsdC1pbiBmdW5jdGlv biBsb29rdXBfZ2xvYmFsX3N5bWJvbD4iXQogfQorCisjIENoZWNrIGZvciBh IHZlcnNpb24gb2YgZ2RiIHdoaWNoIHN1cHBvcnRzIHhtZXRob2QgdGVzdHMu ICBJdCBpcyBkb25lCisjIGluIGEgbWFubmVyIHNpbWlsYXIgdG8gdGhlIGNo ZWNrIGZvciBhIHZlcnNpb24gb2YgZ2RiIHdoaWNoIHN1cHBvcnRzIHRoZQor IyBwcmV0dHktcHJpbnRlciB0ZXN0cyBiZWxvdy4KK3Byb2MgZ2RiX3ZlcnNp b25fY2hlY2tfeG1ldGhvZHMge30geworICAgIHJldHVybiBbZ2RiX2JhdGNo X2NoZWNrIFwKKwkgICAgICAicHl0aG9uIGltcG9ydCBnZGIueG1ldGhvZDsg cHJpbnQoZ2RiLnhtZXRob2QuWE1ldGhvZCkiIFwKKwkgICAgICAiPGNsYXNz ICdnZGJcXC54bWV0aG9kXFwuWE1ldGhvZCc+Il0KK30KZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvbGlic3RkYysrLXhtZXRob2RzL3Vu aXF1ZV9wdHIuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMr Ky14bWV0aG9kcy91bmlxdWVfcHRyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjZjOWZkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9s aWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMrKy14bWV0aG9kcy91bmlx dWVfcHRyLmNjCkBAIC0wLDAgKzEsMzYgQEAKKy8vIHsgZGctZG8gcnVuIH0K Ky8vIHsgZGctb3B0aW9ucyAiLXN0ZD1nbnUrKzExIC1nIC1PMCIgfQorCisv LyBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJ U08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorLy8gc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8gRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91 ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworLy8gVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv bmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKK2ludAorbWFpbiAoKQor eworICBpbnQgKmkgPSBuZXcgaW50OworICAqaSA9IDEwOworCisgIHN0ZDo6 dW5pcXVlX3B0cjxpbnQ+IHAoaSk7CisvLyB7IGRnLWZpbmFsIHsgbm90ZS10 ZXN0ICpwIDEwIH0gfQorLy8geyBkZy1maW5hbCB7IHJlZ2V4cC10ZXN0IHAu Z2V0KCkgMHguKiB9IH0KKworICByZXR1cm4gMDsgIC8vIE1hcmsgU1BPVAor fQorCisvLyB7IGRnLWZpbmFsIHsgZ2RiLXRlc3QgU1BPVCB7fSAxIH0gfQpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9saWJzdGRjKyst eG1ldGhvZHMvdmVjdG9yLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9s aWJzdGRjKysteG1ldGhvZHMvdmVjdG9yLmNjCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjJlZTkzOTkKLS0tIC9kZXYvbnVsbAorKysg Yi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMrKy14bWV0aG9kcy92 ZWN0b3IuY2MKQEAgLTAsMCArMSwzOCBAQAorLy8geyBkZy1kbyBydW4gfQor Ly8geyBkZy1vcHRpb25zICItZyAtTzAiIH0KKworLy8gQ29weXJpZ2h0IChD KSAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLy8KKy8v IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5 LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQor Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8g YW55IGxhdGVyIHZlcnNpb24uCisKKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor Ly8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisvLyB3aXRoIHRo aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNl ZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjaW5j bHVkZSA8dmVjdG9yPgorCitpbnQKK21haW4gKCkKK3sKKyAgc3RkOjp2ZWN0 b3I8aW50PiB2OworICB2LnB1c2hfYmFjaygxKTsKKyAgdi5wdXNoX2JhY2so Mik7CisgIHYucHVzaF9iYWNrKDMpOworLy8geyBkZy1maW5hbCB7IG5vdGUt dGVzdCB2XFswXF0gMSB9IH0KKy8vIHsgZGctZmluYWwgeyBub3RlLXRlc3Qg dlxbMVxdIDIgfSB9CisvLyB7IGRnLWZpbmFsIHsgbm90ZS10ZXN0IHZcWzJc XSAzIH0gfQorLy8geyBkZy1maW5hbCB7IG5vdGUtdGVzdCB2LnNpemUoKSAz IH0gfQorCisgIHJldHVybiAwOyAgLy8gTWFyayBTUE9UCit9CisKKy8vIHsg ZGctZmluYWwgeyBnZGItdGVzdCBTUE9UIHt9IDEgfSB9CmRpZmYgLS1naXQg YS9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMrKy14bWV0aG9kcy94 bWV0aG9kcy5leHAgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMr Ky14bWV0aG9kcy94bWV0aG9kcy5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYzUxYzdlOAotLS0gL2Rldi9udWxsCisrKyBiL2xp YnN0ZGMrKy12My90ZXN0c3VpdGUvbGlic3RkYysrLXhtZXRob2RzL3htZXRo b2RzLmV4cApAQCAtMCwwICsxLDUxIEBACisjICAgQ29weXJpZ2h0IChDKSAy MDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisjIAorIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor IyAKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUK KyMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitsb2FkX2xp YiBnZGItdGVzdC5leHAKKworZGctaW5pdAordjMtYnVpbGRfc3VwcG9ydAor CitnbG9iYWwgR0RCCitpZiAhW2luZm8gZXhpc3RzIDo6ZW52KEdVQUxJVFlf R0RCX05BTUUpXSB7CisgICAgaWYgW2luZm8gZXhpc3RzIEdEQl0geworCXNl dCBndWFsaXR5X2dkYl9uYW1lICIkR0RCIgorICAgIH0gZWxzZSB7CisJc2V0 IGd1YWxpdHlfZ2RiX25hbWUgIlt0cmFuc2Zvcm0gZ2RiXSIKKyAgICB9Cisg ICAgc2V0ZW52IEdVQUxJVFlfR0RCX05BTUUgIiRndWFsaXR5X2dkYl9uYW1l IgorfQorCitpZiB7ISBbZ2RiX3ZlcnNpb25fY2hlY2tfeG1ldGhvZHNdfSB7 CisgICAgdW5zdXBwb3J0ZWQgInhtZXRob2RzLmV4cCIKKyAgICByZXR1cm4K K30KKworIyBUaGlzIGNhbiBiZSB1c2VkIHRvIGtlZXAgdGhlIC5leGUgYXJv dW5kLiAgZGctdGVzdCBoYXMgYW4gb3B0aW9uIGZvcgorIyB0aGlzIGJ1dCB0 aGVyZSBpcyBubyB3YXkgdG8gcGFzcyBpdCB0aHJvdWdoIGRnLXJ1bnRlc3Qu CitnbG9iYWwgZGctaW50ZXJwcmV0ZXItYmF0Y2gtbW9kZQorc2V0IGRnLWlu dGVycHJldGVyLWJhdGNoLW1vZGUgMQorCitnbG9iYWwgREVGQVVMVF9DWFhG TEFHUworZ2xvYmFsIFBDSF9DWFhGTEFHUworZGctcnVudGVzdCBbbHNvcnQg W2dsb2IgJHNyY2Rpci8kc3ViZGlyLyouY2NdXSBcCisgICIiICIkREVGQVVM VF9DWFhGTEFHUyAkUENIX0NYWEZMQUdTIgorCitpZiBbaW5mbyBleGlzdHMg Z3VhbGl0eV9nZGJfbmFtZV0geworICAgIHVuc2V0ZW52IEdVQUxJVFlfR0RC X05BTUUKK30KKworZGctZmluaXNoCg== --089e0158aaa693da030501a33fbb--