From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32022 invoked by alias); 1 Sep 2011 09:18:28 -0000 Received: (qmail 32014 invoked by uid 22791); 1 Sep 2011 09:18:26 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-vw0-f41.google.com (HELO mail-vw0-f41.google.com) (209.85.212.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 01 Sep 2011 09:18:12 +0000 Received: by vwm42 with SMTP id 42so1500909vwm.0 for ; Thu, 01 Sep 2011 02:18:11 -0700 (PDT) Received: by 10.220.107.209 with SMTP id c17mr398566vcp.116.1314868691123; Thu, 01 Sep 2011 02:18:11 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.189.70 with HTTP; Thu, 1 Sep 2011 02:17:51 -0700 (PDT) In-Reply-To: References: From: Kevin Pouget Date: Thu, 01 Sep 2011 09:56:00 -0000 Message-ID: Subject: Re: [RFC - Python] New ObjFile event To: Tom Tromey Cc: pmuldoon@redhat.com, gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=f46d0438911d42bce404abddb960 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: 2011-09/txt/msg00006.txt.bz2 --f46d0438911d42bce404abddb960 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5352 On Mon, May 23, 2011 at 10:43 AM, Kevin Pouget wro= te: > Hello, > > >> Kevin> + =A0 =A0 =A0 =A0py-value.o \ >> Kevin> + =A0 =A0 =A0 =A0py-newobjfileevent.o >> >> Alphabetical, please. =A0Applies elsewhere in the Makefile patch too. > > fixed, sorry about that > >> Kevin> =A0# found by configure; if GNU Make is not found, we fall back t= o a >> Kevin> diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog >> Kevin> index 08d6c8c..3ea5068 100644 >> Kevin> --- a/gdb/doc/ChangeLog >> Kevin> +++ b/gdb/doc/ChangeLog >> Kevin> @@ -1,3 +1,9 @@ >> Kevin> +2011-03-29 =A0Kevin Pouget >> Kevin> + =A0 =A0 =A0 =A0* gdb.textinfo (Events In Python): Document `gdb= .NewObjFileEvent' >> >> Missing blank line after the date line, and typo: "texinfo", not >> "textinfo". > > I removed the Changelog entries from the patch as suggested by Pedro > in another thread, > typo fixed at the bottom of the mail > >> Kevin> +@item events.newobjfile >> Kevin> +Emits @code{gdb.NewObjFileEvent} which indicates that a new obje= ct-file has >> Kevin> +been loaded in the inferior. >> >> This is not an accurate description -- it may or may not be related to a >> change in the inferior. >> >> E.g., if the user did "set auto-solib-add off", then no objfile will be >> made when a shared library is loaded. >> >> Or, if the user does "add-symbol-file", then a new objfile will be made >> even though nothing has changed in the inferior. >> >> Maybe this isn't the event you actually wanted? =A0I mean -- it is fine = to >> have this, and I'd like it if you followed through :-), but it may not >> do what you are expecting. > > you're right, I changed it to: > =A0+been loaded by @value{GDBN}. > > About the behaviour, I actually wanted to mimic the way GDB decides to > enable [linux/thread-db] thread-debugging, ie checking the name of the > shared library loaded by GDB. As you mentioned that's not perfect, > "set auto-solib-add off" or "add-symbol-file" might change the > behaviour, but I guess it's easy enough to cope with it > >> Kevin> + =A0/* Will be NULL when clearing the symtab. */ >> Kevin> + =A0if (objfile) >> Kevin> + =A0 =A0cleanup =3D ensure_python_env (get_objfile_arch (objfile= ), current_language); >> Kevin> + =A0else >> Kevin> + =A0 =A0cleanup =3D ensure_python_env (get_current_arch (), curr= ent_language); >> >> I think it is better to just return early if objfile=3D=3DNULL. >> Or, emit a different event in this case. > > I found some more documentation about objfile =3D=3D NULL in the Internal= s: >> Called with objfile equal to NULL to indicate previously loaded symbol t= able data has now been invalidated. > > so as you suggested, I just return immediately and leave symbol table > invalidation for another patch > >> Kevin> +2011-03-29 =A0Kevin Pouget >> Kevin> + =A0 =A0 =A0 =A0* testsuite/gdb.python/py-events-shlib.c: New fi= le. >> >> Missing newline. > > cf above, ChangeLog removed from the diff patch and fixed at the bottom > >> Kevin> +# Start with a fresh gdb. >> Kevin> + >> Kevin> +gdb_exit >> Kevin> +gdb_start >> >> I think clean_restart is preferred here. >> But maybe skip_python_tests has to be inserted in the middle of the >> sequence? > > fixed > >> Kevin> +gdb_test "run" ".*event type: new_objfile.* >> Kevin> +.*new objfile name.*" >> >> This style of test is hard to read. =A0I'd prefer a \n in there. > > Fixed (I didn't want to test the '\n' specifically but just make it > more readable:). > However, JFYI the test file already contains such formatting: > > # Test continue event and breakpoint stop event > gdb_test "continue" ".*event type: continue.* > .*event type: stop.* > .*stop reason: breakpoint.* > .*breakpoint number: 2.* > all threads stopped" > > #test exited event. > gdb_test "continue" ".*event type: continue.* > .*event type: exit.* > .*exit code: 12.*" > > > > thanks for your review, > > Kevin Hello, could you please tell me what you think about this patch, I think I address all the points you mentioned in your last mail I added a NEWS entry, and as far as I've seen, the documentation was not reviewed. Cordially, Kevin 2011-03-29 Kevin Pouget Allow Python notification of new object-file loadings. * Makefile.in (SUBDIR_PYTHON_SRCS): Add py-newobjfilevent.c. (SUBDIR_PYTHON_OBS): Add py-newobjfileevent.o. Add build rule for this file. * python/py-event.h (emit_new_objfile_event): New prototype. (newobjfile): New Python event emitter. * python/py-evts.c (gdbpy_initialize_py_events): Add newobjfile to Python event registry. * python/py-inferior.c: Include objfiles.h (python_new_objfile): New function. (gdbpy_initialize_inferior): Add python_new_objfile to the new objfile observers. * python/py-newobjfileevent.c: New file. * python-internal.h (gdbpy_initialize_new_objfile_event): New prototype. (gdbpy_current_objfile): New global variable. * python/python.c (gdbpy_current_objfile): Make global. (_initialize_python): Add gdbpy_initialize_new_objfile_event call. 2011-03-29 Kevin Pouget Allow Python notification of new object-file loadings. * gdb.texinfo (Events In Python): Document `gdb.NewObjFileEvent' events emitter. (Objfiles In Python): Indicate that `gdb.current_objfile' is also set during new object-file callbacks. --f46d0438911d42bce404abddb960 Content-Type: application/octet-stream; name=0001-New-ObjFile-event Content-Disposition: attachment; filename=0001-New-ObjFile-event Content-Transfer-Encoding: base64 X-Attachment-Id: f_gs1iupga1 Content-length: 15775 RnJvbSBmNWU0NDRmMjg3M2E3OWU0OTJhMjAyYmU5NzU4NjM5ZGEyNDYzZjE2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLZXZpbiBQb3VnZXQg PGtldmluLnBvdWdldEBzdC5jb20+CkRhdGU6IFRodSwgMSBTZXAgMjAxMSAx MTowODoyMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIE5ldyBPYmpGaWxlIGV2 ZW50CgotLS0KIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNiArKysrKysKIGdkYi9ORVdTICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMiArKwogZ2RiL2RvYy9nZGIudGV4aW5mbyAg ICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrKysrKysrKystLS0tCiBnZGIv cHl0aG9uL3B5LWV2ZW50LmggICAgICAgICAgICAgICAgICB8ICAgIDEgKwog Z2RiL3B5dGhvbi9weS1ldmVudHMuaCAgICAgICAgICAgICAgICAgfCAgICAx ICsKIGdkYi9weXRob24vcHktZXZ0cy5jICAgICAgICAgICAgICAgICAgIHwg ICAgMyArKysKIGdkYi9weXRob24vcHktaW5mZXJpb3IuYyAgICAgICAgICAg ICAgIHwgICAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCiBnZGIvcHl0 aG9uL3B5dGhvbi1pbnRlcm5hbC5oICAgICAgICAgICB8ICAgIDIgKysKIGdk Yi9weXRob24vcHl0aG9uLmMgICAgICAgICAgICAgICAgICAgIHwgICAgNiAr KysrLS0KIGdkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMuYyAg IHwgICAgMyArKysKIGdkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVu dHMuZXhwIHwgICAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQogZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy5weSAgfCAgIDIwICsr KysrKysrKysrKysrKysrKysrCiAxMiBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNl cnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nZGIv TWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KaW5kZXggODI2ZDMzOS4u OTg2NTg4YiAxMDA2NDQKLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKyBiL2dk Yi9NYWtlZmlsZS5pbgpAQCAtMjg5LDYgKzI4OSw3IEBAIFNVQkRJUl9QWVRI T05fT0JTID0gXAogCXB5LWluZmVyaW9yLm8gXAogCXB5LWluZnRocmVhZC5v IFwKIAlweS1sYXp5LXN0cmluZy5vIFwKKwlweS1uZXdvYmpmaWxlZXZlbnQu byBcCiAJcHktb2JqZmlsZS5vIFwKIAlweS1wYXJhbS5vIFwKIAlweS1wcmV0 dHlwcmludC5vIFwKQEAgLTMxOSw2ICszMjAsNyBAQCBTVUJESVJfUFlUSE9O X1NSQ1MgPSBcCiAJcHl0aG9uL3B5LWluZmVyaW9yLmMgXAogCXB5dGhvbi9w eS1pbmZ0aHJlYWQuYyBcCiAJcHl0aG9uL3B5LWxhenktc3RyaW5nLmMgXAor CXB5dGhvbi9weS1uZXdvYmpmaWxlZXZlbnQuYyBcCiAJcHl0aG9uL3B5LW9i amZpbGUuYyBcCiAJcHl0aG9uL3B5LXBhcmFtLmMgXAogCXB5dGhvbi9weS1w cmV0dHlwcmludC5jIFwKQEAgLTIxMTUsNiArMjExNywxMCBAQCBweS1sYXp5 LXN0cmluZy5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWxhenktc3RyaW5nLmMK IAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhv bi9weS1sYXp5LXN0cmluZy5jCiAJJChQT1NUQ09NUElMRSkKIAorcHktbmV3 b2JqZmlsZWV2ZW50Lm86ICQoc3JjZGlyKS9weXRob24vcHktbmV3b2JqZmls ZWV2ZW50LmMKKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNk aXIpL3B5dGhvbi9weS1uZXdvYmpmaWxlZXZlbnQuYworCSQoUE9TVENPTVBJ TEUpCisKIHB5LW9iamZpbGUubzogJChzcmNkaXIpL3B5dGhvbi9weS1vYmpm aWxlLmMKIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIp L3B5dGhvbi9weS1vYmpmaWxlLmMKIAkkKFBPU1RDT01QSUxFKQpkaWZmIC0t Z2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwppbmRleCAyNTVhMjJlLi5iYjU3 OTVjIDEwMDY0NAotLS0gYS9nZGIvTkVXUworKysgYi9nZGIvTkVXUwpAQCAt MzgsNiArMzgsOCBAQAogCiAgICoqIFN5bWJvbHMgbm93IHByb3ZpZGUgdGhl ICJ0eXBlIiBhdHRyaWJ1dGUsIHRoZSB0eXBlIG9mIHRoZSBzeW1ib2wuCiAK KyAgKiogQSBuZXcgZXZlbnQgImdkYi5uZXdvYmpmaWxlIiBoYXMgYmVlbiBh ZGRlZC4KKwogKiBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGggbm93IHN1cHBv cnRzIHR3byBzcGVjaWFsIHZhbHVlczogJHNkaXIgYW5kICRwZGlyLgogICAk c2RpciBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgc3lzdGVtIGxvY2F0aW9ucyBv ZiBzaGFyZWQgbGlicmFyaWVzLgogICAkcGRpciBzcGVjaWZpZXMgdGhlIGRp cmVjdG9yeSB3aGVyZSB0aGUgbGlicHRocmVhZCB1c2VkIGJ5IHRoZSBhcHBs aWNhdGlvbgpkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KaW5kZXggMjNiMmE5OC4uMTE4MTgyZCAxMDA2 NDQKLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysgYi9nZGIvZG9jL2dk Yi50ZXhpbmZvCkBAIC0yMjMwNyw2ICsyMjMwNywxMiBAQCBFbWl0cyBAY29k ZXtnZGIuU2lnbmFsRXZlbnR9IHdoaWNoIGV4dGVuZHMgQGNvZGV7Z2RiLlN0 b3BFdmVudH0uCiBUaGlzIGV2ZW50IGluZGljYXRlcyB0aGF0IHRoZSBpbmZl cmlvciBvciBvbmUgb2YgaXRzIHRocmVhZHMgaGFzIHJlY2VpdmVkIGFzCiBz aWduYWwuICBAY29kZXtnZGIuU2lnbmFsRXZlbnR9IGhhcyB0aGUgZm9sbG93 aW5nIGF0dHJpYnV0ZXM6CiAKK0BpdGVtIGV2ZW50cy5uZXdvYmpmaWxlCitF bWl0cyBAY29kZXtnZGIuTmV3T2JqRmlsZUV2ZW50fSB3aGljaCBpbmRpY2F0 ZXMgdGhhdCBhIG5ldyBvYmplY3QtZmlsZSBoYXMKK2JlZW4gbG9hZGVkIGJ5 IEB2YWx1ZXtHREJOfS4KKworRHVyaW5nIHRoZSBjYWxsYmFjaywgYGBjdXJy ZW50IG9iamZpbGUnJyB3aWxsIGJlIHNldCB0byB0aGUgbmV3IG9iamVjdCBm aWxlLgorCiBAdGFibGUgQGNvZGUKIEBkZWZpdmFyIFNpZ25hbEV2ZW50IHN0 b3Bfc2lnbmFsCiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNpZ25hbCBy ZWNlaXZlZCBieSB0aGUgaW5mZXJpb3IuICBBIGxpc3Qgb2YgcG9zc2libGUK QEAgLTIyOTQ5LDEwICsyMjk1NSwxMCBAQCBUaGUgZm9sbG93aW5nIG9iamZp bGUtcmVsYXRlZCBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSBpbiB0aGUKIAog QGZpbmRleCBnZGIuY3VycmVudF9vYmpmaWxlCiBAZGVmdW4gY3VycmVudF9v YmpmaWxlCi1XaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQgKEBw eHJlZntBdXRvLWxvYWRpbmd9KSwgQHZhbHVle0dEQk59Ci1zZXRzIHRoZSBg YGN1cnJlbnQgb2JqZmlsZScnIHRvIHRoZSBjb3JyZXNwb25kaW5nIG9iamZp bGUuICBUaGlzCi1mdW5jdGlvbiByZXR1cm5zIHRoZSBjdXJyZW50IG9iamZp bGUuICBJZiB0aGVyZSBpcyBubyBjdXJyZW50IG9iamZpbGUsCi10aGlzIGZ1 bmN0aW9uIHJldHVybnMgQGNvZGV7Tm9uZX0uCitXaGVuIGF1dG8tbG9hZGlu ZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntBdXRvLWxvYWRpbmd9KSBhbmQg ZHVyaW5nIG5ldworb2JqZWN0LWZpbGUgY2FsbGJhY2tzLCBAdmFsdWV7R0RC Tn0gc2V0cyB0aGUgYGBjdXJyZW50IG9iamZpbGUnJyB0byB0aGUKK2NvcnJl c3BvbmRpbmcgb2JqZmlsZS4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUg Y3VycmVudCBvYmpmaWxlLiAgSWYKK3RoZXJlIGlzIG5vIGN1cnJlbnQgb2Jq ZmlsZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LgogQGVu ZCBkZWZ1bgogCiBAZmluZGV4IGdkYi5vYmpmaWxlcwpkaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9weS1ldmVudC5oIGIvZ2RiL3B5dGhvbi9weS1ldmVudC5o CmluZGV4IGY0YjNlZTIuLjkwNjlhNTEgMTAwNjQ0Ci0tLSBhL2dkYi9weXRo b24vcHktZXZlbnQuaAorKysgYi9nZGIvcHl0aG9uL3B5LWV2ZW50LmgKQEAg LTExMSw2ICsxMTEsNyBAQCBleHRlcm4gaW50IGV2cHlfZW1pdF9ldmVudCAo UHlPYmplY3QgKmV2ZW50LAogCiBleHRlcm4gUHlPYmplY3QgKmNyZWF0ZV9l dmVudF9vYmplY3QgKFB5VHlwZU9iamVjdCAqcHlfdHlwZSk7CiBleHRlcm4g UHlPYmplY3QgKmNyZWF0ZV90aHJlYWRfZXZlbnRfb2JqZWN0IChQeVR5cGVP YmplY3QgKnB5X3R5cGUpOworZXh0ZXJuIGludCBlbWl0X25ld19vYmpmaWxl X2V2ZW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAKIGV4dGVybiB2 b2lkIGV2cHlfZGVhbGxvYyAoUHlPYmplY3QgKnNlbGYpOwogZXh0ZXJuIGlu dCBldnB5X2FkZF9hdHRyaWJ1dGUgKFB5T2JqZWN0ICpldmVudCwKZGlmZiAt LWdpdCBhL2dkYi9weXRob24vcHktZXZlbnRzLmggYi9nZGIvcHl0aG9uL3B5 LWV2ZW50cy5oCmluZGV4IGJkNTQ0MTguLjcwZjQ1YTQgMTAwNjQ0Ci0tLSBh L2dkYi9weXRob24vcHktZXZlbnRzLmgKKysrIGIvZ2RiL3B5dGhvbi9weS1l dmVudHMuaApAQCAtNDUsNiArNDUsNyBAQCB0eXBlZGVmIHN0cnVjdAogICBl dmVudHJlZ2lzdHJ5X29iamVjdCAqc3RvcDsKICAgZXZlbnRyZWdpc3RyeV9v YmplY3QgKmNvbnQ7CiAgIGV2ZW50cmVnaXN0cnlfb2JqZWN0ICpleGl0ZWQ7 CisgIGV2ZW50cmVnaXN0cnlfb2JqZWN0ICpuZXdvYmpmaWxlOwogCiAgIFB5 T2JqZWN0ICptb2R1bGU7CiAKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHkt ZXZ0cy5jIGIvZ2RiL3B5dGhvbi9weS1ldnRzLmMKaW5kZXggNTBjMDVmMy4u YzhkMTA0NCAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weS1ldnRzLmMKKysr IGIvZ2RiL3B5dGhvbi9weS1ldnRzLmMKQEAgLTU4LDYgKzU4LDkgQEAgZ2Ri cHlfaW5pdGlhbGl6ZV9weV9ldmVudHMgKHZvaWQpCiAgIGlmIChhZGRfbmV3 X3JlZ2lzdHJ5ICgmZ2RiX3B5X2V2ZW50cy5leGl0ZWQsICJleGl0ZWQiKSA8 IDApCiAgICAgZ290byBmYWlsOwogCisgIGlmIChhZGRfbmV3X3JlZ2lzdHJ5 ICgmZ2RiX3B5X2V2ZW50cy5uZXdvYmpmaWxlLCAibmV3b2JqZmlsZSIpIDwg MCkKKyAgICBnb3RvIGZhaWw7CisKICAgUHlfSU5DUkVGIChnZGJfcHlfZXZl bnRzLm1vZHVsZSk7CiAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9t b2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudHMiLApk aWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jIGIvZ2RiL3B5 dGhvbi9weS1pbmZlcmlvci5jCmluZGV4IDZhZGQ2ODEuLjYzZmZjMmIgMTAw NjQ0Ci0tLSBhL2dkYi9weXRob24vcHktaW5mZXJpb3IuYworKysgYi9nZGIv cHl0aG9uL3B5LWluZmVyaW9yLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs dWRlICJnZGJjb3JlLmgiCiAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAjaW5j bHVkZSAiaW5mZXJpb3IuaCIKKyNpbmNsdWRlICJvYmpmaWxlcy5oIgogI2lu Y2x1ZGUgIm9ic2VydmVyLmgiCiAjaW5jbHVkZSAicHl0aG9uLWludGVybmFs LmgiCiAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgpAQCAtMTI1LDYgKzEyNiwy OSBAQCBweXRob25faW5mZXJpb3JfZXhpdCAoc3RydWN0IGluZmVyaW9yICpp bmYpCiAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKIH0KIAorLyogQ2FsbGJh Y2sgdXNlZCB0byBub3RpZnkgUHl0aG9uIGxpc3RlbmVycyBhYm91dCBuZXcg b2JqZmlsZXMgbG9hZGVkIGluIHRoZQorICAgaW5mZXJpb3IuIFB5dGhvbiBn bG9iYWwgdmFyaWFibGUgJ2dkYi5jdXJyZW50X29iamZpbGUgKCknIHdpbGwg YmUgc2V0CisgICBkdXJpbmcgdGhlIG5vdGlmaWNhdGlvbnMuICAqLworCitz dGF0aWMgdm9pZAorcHl0aG9uX25ld19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKK3sKKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisK KyAgaWYgKG9iamZpbGUgPT0gTlVMTCkKKyAgICAgICByZXR1cm47CisKKyAg Y2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfb2JqZmlsZV9hcmNo IChvYmpmaWxlKSwgY3VycmVudF9sYW5ndWFnZSk7CisKKyAgZ2RicHlfY3Vy cmVudF9vYmpmaWxlID0gb2JqZmlsZTsKKworICBpZiAoZW1pdF9uZXdfb2Jq ZmlsZV9ldmVudCAob2JqZmlsZSkgPCAwKQorICAgIGdkYnB5X3ByaW50X3N0 YWNrICgpOworCisgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAgZ2RicHlf Y3VycmVudF9vYmpmaWxlID0gTlVMTDsKK30KKwogLyogUmV0dXJuIGEgcmVm ZXJlbmNlIHRvIHRoZSBQeXRob24gb2JqZWN0IG9mIHR5cGUgSW5mZXJpb3IK ICAgIHJlcHJlc2VudGluZyBJTkZFUklPUi4gIElmIHRoZSBvYmplY3QgaGFz IGFscmVhZHkgYmVlbiBjcmVhdGVkLAogICAgcmV0dXJuIGl0IGFuZCBpbmNy ZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCwgIG90aGVyd2lzZSwgY3JlYXRl IGl0LgpAQCAtNzAxLDYgKzcyNSw3IEBAIGdkYnB5X2luaXRpYWxpemVfaW5m ZXJpb3IgKHZvaWQpCiAgIG9ic2VydmVyX2F0dGFjaF9ub3JtYWxfc3RvcCAo cHl0aG9uX29uX25vcm1hbF9zdG9wKTsKICAgb2JzZXJ2ZXJfYXR0YWNoX3Rh cmdldF9yZXN1bWVkIChweXRob25fb25fcmVzdW1lKTsKICAgb2JzZXJ2ZXJf YXR0YWNoX2luZmVyaW9yX2V4aXQgKHB5dGhvbl9pbmZlcmlvcl9leGl0KTsK KyAgb2JzZXJ2ZXJfYXR0YWNoX25ld19vYmpmaWxlIChweXRob25fbmV3X29i amZpbGUpOwogCiAgIG1lbWJ1Zl9vYmplY3RfdHlwZS50cF9uZXcgPSBQeVR5 cGVfR2VuZXJpY05ldzsKICAgaWYgKFB5VHlwZV9SZWFkeSAoJm1lbWJ1Zl9v YmplY3RfdHlwZSkgPCAwKQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRo b24taW50ZXJuYWwuaCBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgK aW5kZXggOTk2YjIzYi4uYTY0ZGVkMiAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhv bi9weXRob24taW50ZXJuYWwuaAorKysgYi9nZGIvcHl0aG9uL3B5dGhvbi1p bnRlcm5hbC5oCkBAIC0yMTEsNiArMjExLDcgQEAgdm9pZCBnZGJweV9pbml0 aWFsaXplX2JyZWFrcG9pbnRfZXZlbnQgKHZvaWQpOwogdm9pZCBnZGJweV9p bml0aWFsaXplX2NvbnRpbnVlX2V2ZW50ICh2b2lkKTsKIHZvaWQgZ2RicHlf aW5pdGlhbGl6ZV9leGl0ZWRfZXZlbnQgKHZvaWQpOwogdm9pZCBnZGJweV9p bml0aWFsaXplX3RocmVhZF9ldmVudCAodm9pZCk7Cit2b2lkIGdkYnB5X2lu aXRpYWxpemVfbmV3X29iamZpbGVfZXZlbnQgKHZvaWQpOwogCiBzdHJ1Y3Qg Y2xlYW51cCAqbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAoUHlPYmplY3QgKnB5 KTsKIApAQCAtMjE5LDYgKzIyMCw3IEBAIHN0cnVjdCBjbGVhbnVwICplbnN1 cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAKIGV4 dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqcHl0aG9uX2dkYmFyY2g7CiBleHRlcm4g Y29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvbl9sYW5ndWFnZTsK K2V4dGVybiBzdHJ1Y3Qgb2JqZmlsZSAqZ2RicHlfY3VycmVudF9vYmpmaWxl OwogCiAvKiBVc2UgdGhpcyBhZnRlciBhIFRSWV9FWENFUFQgdG8gdGhyb3cg dGhlIGFwcHJvcHJpYXRlIFB5dGhvbgogICAgZXhjZXB0aW9uLiAgKi8KZGlm ZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIvcHl0aG9uL3B5 dGhvbi5jCmluZGV4IDAzZWRjZTkuLjgxMmZjNjEgMTAwNjQ0Ci0tLSBhL2dk Yi9weXRob24vcHl0aG9uLmMKKysrIGIvZ2RiL3B5dGhvbi9weXRob24uYwpA QCAtODkxLDggKzg5MSw5IEBAIGdkYnB5X3Byb2dzcGFjZXMgKFB5T2JqZWN0 ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51c2VkMikKIAogLyogVGhlICJjdXJy ZW50IiBvYmpmaWxlLiAgVGhpcyBpcyBzZXQgd2hlbiBnZGIgZGV0ZWN0cyB0 aGF0IGEgbmV3CiAgICBvYmpmaWxlIGhhcyBiZWVuIGxvYWRlZC4gIEl0IGlz IG9ubHkgc2V0IGZvciB0aGUgZHVyYXRpb24gb2YgYSBjYWxsIHRvCi0gICBz b3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZTsgaXQgaXMgTlVMTCBh dCBvdGhlciB0aW1lcy4gICovCi1zdGF0aWMgc3RydWN0IG9iamZpbGUgKmdk YnB5X2N1cnJlbnRfb2JqZmlsZTsKKyAgIHNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIGFuZCBuZXdfb2JqZmlsZSBjYWxsYmFja3M7IGl0IGlz IE5VTEwgYXQKKyAgIG90aGVyIHRpbWVzLiAgKi8KK3N0cnVjdCBvYmpmaWxl ICpnZGJweV9jdXJyZW50X29iamZpbGU7CiAKIC8qIFNldCB0aGUgY3VycmVu dCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBTVFJFQU0sRklM RSBhcwogICAgUHl0aG9uIGNvZGUuICAqLwpAQCAtMTIwOSw2ICsxMjEwLDcg QEAgRW5hYmxlcyBvciBkaXNhYmxlcyBwcmludGluZyBvZiBQeXRob24gc3Rh Y2sgdHJhY2VzLiIpLAogICBnZGJweV9pbml0aWFsaXplX2NvbnRpbnVlX2V2 ZW50ICgpOwogICBnZGJweV9pbml0aWFsaXplX2V4aXRlZF9ldmVudCAoKTsK ICAgZ2RicHlfaW5pdGlhbGl6ZV90aHJlYWRfZXZlbnQgKCk7CisgIGdkYnB5 X2luaXRpYWxpemVfbmV3X29iamZpbGVfZXZlbnQgKCkgOwogCiAgIG9ic2Vy dmVyX2F0dGFjaF9iZWZvcmVfcHJvbXB0IChiZWZvcmVfcHJvbXB0X2hvb2sp OwogCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt ZXZlbnRzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXZlbnRz LmMKaW5kZXggY2ViNjk3ZS4uNWFjNzJmMiAxMDA2NDQKLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy5jCisrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMuYwpAQCAtMTYsNiArMTYsOCBA QAogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSAg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKi8KIAorZXh0ZXJu IHZvaWQgZG9fbm90aGluZyAodm9pZCk7CisKIGludCBzZWNvbmQoKXsKICAg cmV0dXJuIDEyOwogfQpAQCAtMjUsNSArMjcsNiBAQCBpbnQgZmlyc3QoKXsK IH0KIAogaW50IG1haW4gKCl7CisgIGRvX25vdGhpbmcoKTsKICAgcmV0dXJu IGZpcnN0KCk7CiB9CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktZXZlbnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1ldmVudHMuZXhwCmluZGV4IGU1ZDZkYWYuLjExZDdlMDAgMTAwNjQ0 Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMuZXhw CisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMuZXhw CkBAIC0yNCwyMyArMjQsMzkgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7CiAK IGxvYWRfbGliIGdkYi1weXRob24uZXhwCiAKK3NldCBsaWJmaWxlICJweS1l dmVudHMtc2hsaWIiCitzZXQgbGlic3JjICAkc3JjZGlyLyRzdWJkaXIvJGxp YmZpbGUuYworc2V0IGxpYl9zbCAgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxl LnNvCitzZXQgbGliX29wdHMgIGRlYnVnCisKIHNldCB0ZXN0ZmlsZSAicHkt ZXZlbnRzIgogc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwogc2V0IGJpbmZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorc2V0IGV4ZWNf b3B0cyBbbGlzdCBkZWJ1ZyBzaGxpYj0kbGliX3NsXQogc2V0IHB5ZmlsZSAk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LnB5CiAKLWlmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9 ICR7c3JjZmlsZX1dIH0geworaWYgW2dldF9jb21waWxlcl9pbmZvICR7Ymlu ZmlsZX1dIHsKICAgICByZXR1cm4gLTEKIH0KIAoraWYgeyBbZ2RiX2NvbXBp bGVfc2hsaWIgJGxpYnNyYyAkbGliX3NsICRsaWJfb3B0c10gIT0gIiIKKyAg ICAgfHwgW2dkYl9jb21waWxlICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAk YmluZmlsZSBleGVjdXRhYmxlICRleGVjX29wdHNdICE9ICIifSB7CisgICAg dW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIGVpdGhlciAkbGlic3JjIG9y ICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZS4iCisgICAgcmV0dXJuIC0xCit9 CisKKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KK2NsZWFuX3Jlc3RhcnQg JHt0ZXN0ZmlsZX0KKwogaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBj b250aW51ZSB9CiAKIGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGV4ZWNm aWxlICgnJHtweWZpbGV9JykiICIiCiAKLWlmICFbcnVudG9fbWFpbiBdIHRo ZW4gewotICAgIGZhaWwgIkNhbid0IHJ1biB0byBtYWluIgotICAgIHJldHVy biAtMQotfQorZ2RiX3Rlc3QgIlRlc3RfTmV3b2JqX0V2ZW50cyIgIk5ldyBP YmplY3RGaWxlIEV2ZW50IHRlc3RlciByZWdpc3RlcmVkLiIgIlJlZ2lzdGVy IG5ldyBvYmpmaWxlIGV2ZW50IGhhbmRsZXIiCisKK2dkYl9icmVha3BvaW50 ICJtYWluIiB7dGVtcG9yYXJ5fQorCitnZGJfdGVzdCAicnVuIiAiLipldmVu dCB0eXBlOiBuZXdfb2JqZmlsZS4qbmV3IG9iamZpbGUgbmFtZS4qIiAiTmV3 IG9iamZpbGUgbm90aWZpY2F0aW9uIgogCiBnZGJfdGVzdCAiVGVzdF9FdmVu dHMiICJFdmVudCB0ZXN0ZXJzIHJlZ2lzdGVyZWQuIgogCmRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXZlbnRzLnB5IGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy5weQppbmRleCA5ZjA1 YjlmLi4xMmUzNmU4IDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktZXZlbnRzLnB5CisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1ldmVudHMucHkKQEAgLTQ4LDYgKzQ4LDE0IEBAIGRlZiBjb250 aW51ZV9oYW5kbGVyIChldmVudCk6CiAgICAgaWYgKCBldmVudC5pbmZlcmlv cl90aHJlYWQgaXMgbm90IE5vbmUpIDoKICAgICAgICAgcHJpbnQgInRocmVh ZCBudW06ICVzIiAlIChldmVudC5pbmZlcmlvcl90aHJlYWQubnVtKTsKIAor ZGVmIG5ld19vYmpmaWxlX2hhbmRsZXIgKGV2ZW50KToKKyAgICBpZiAoaXNp bnN0YW5jZSAoZXZlbnQsIGdkYi5OZXdPYmpGaWxlRXZlbnQpKToKKyAgICAg ICAgcHJpbnQgImV2ZW50IHR5cGU6IG5ld19vYmpmaWxlIgorICAgIGlmIChn ZGIuY3VycmVudF9vYmpmaWxlICgpIGlzIG5vdCBOb25lKToKKyAgICAJcHJp bnQgIm5ldyBvYmpmaWxlIG5hbWU6ICVzIiAlIChnZGIuY3VycmVudF9vYmpm aWxlICgpLmZpbGVuYW1lKQorICAgIGVsc2U6CisgICAgICAgIHByaW50ICJu ZXcgb2JqZmlsZSBpcyBOb25lIgorCiBjbGFzcyB0ZXN0X2V2ZW50cyAoZ2Ri LkNvbW1hbmQpOgogICAgICIiIlRlc3QgZXZlbnRzLiIiIgogCkBAIC02Miwz ICs3MCwxNSBAQCBjbGFzcyB0ZXN0X2V2ZW50cyAoZ2RiLkNvbW1hbmQpOgog ICAgICAgICBwcmludCAiRXZlbnQgdGVzdGVycyByZWdpc3RlcmVkLiIKIAog dGVzdF9ldmVudHMgKCkKKworY2xhc3MgdGVzdF9uZXdvYmpfZXZlbnRzIChn ZGIuQ29tbWFuZCk6CisgICAgIiIiTmV3T2JqIGV2ZW50cy4iIiIKKworICAg IGRlZiBfX2luaXRfXyAoc2VsZik6CisgICAgICAgIGdkYi5Db21tYW5kLl9f aW5pdF9fIChzZWxmLCAidGVzdF9uZXdvYmpfZXZlbnRzIiwgZ2RiLkNPTU1B TkRfU1RBQ0spCisKKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21f dHR5KToKKyAgICAgICAgZ2RiLmV2ZW50cy5uZXdvYmpmaWxlLmNvbm5lY3Qg KG5ld19vYmpmaWxlX2hhbmRsZXIpCisgICAgICAgIHByaW50ICJOZXcgT2Jq ZWN0RmlsZSBFdmVudCB0ZXN0ZXIgcmVnaXN0ZXJlZC4iCisKK3Rlc3RfbmV3 b2JqX2V2ZW50cyAoKQotLSAKMS43LjYKCg== --f46d0438911d42bce404abddb960--