From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12214 invoked by alias); 23 May 2011 08:44:03 -0000 Received: (qmail 12193 invoked by uid 22791); 23 May 2011 08:43:58 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 23 May 2011 08:43:40 +0000 Received: by vxk20 with SMTP id 20so5065675vxk.0 for ; Mon, 23 May 2011 01:43:39 -0700 (PDT) Received: by 10.52.177.8 with SMTP id cm8mr3000538vdc.78.1306140219081; Mon, 23 May 2011 01:43:39 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.188.139 with HTTP; Mon, 23 May 2011 01:43:19 -0700 (PDT) In-Reply-To: References: From: Kevin Pouget Date: Mon, 23 May 2011 08:44: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=20cf3071cd14c9036404a3ed776e 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-05/txt/msg00509.txt.bz2 --20cf3071cd14c9036404a3ed776e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4890 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 to= 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 objec= t-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: +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 (), curre= nt_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 Internals: > Called with objfile equal to NULL to indicate previously loaded symbol ta= ble 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 fil= e. > > 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 -- 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. --20cf3071cd14c9036404a3ed776e Content-Type: text/plain; charset=US-ASCII; name="new-obj-file.txt" Content-Disposition: attachment; filename="new-obj-file.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_go1j48zq0 Content-length: 18195 ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5p bgppbmRleCA1YmFiMzYwLi4xZGUxNjY2IDEwMDY0NAotLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC0yOTAsNiArMjkw LDcgQEAgU1VCRElSX1BZVEhPTl9PQlMgPSBcCiAJcHktaW5mZXJpb3IubyBc CiAJcHktaW5mdGhyZWFkLm8gXAogCXB5LWxhenktc3RyaW5nLm8gXAorCXB5 LW5ld29iamZpbGVldmVudC5vIFwKIAlweS1vYmpmaWxlLm8gXAogCXB5LXBh cmFtLm8gXAogCXB5LXByZXR0eXByaW50Lm8gXApAQCAtMzIwLDYgKzMyMSw3 IEBAIFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKIAlweXRob24vcHktaW5mZXJp b3IuYyBcCiAJcHl0aG9uL3B5LWluZnRocmVhZC5jIFwKIAlweXRob24vcHkt bGF6eS1zdHJpbmcuYyBcCisJcHl0aG9uL3B5LW5ld29iamZpbGVldmVudC5j IFwKIAlweXRob24vcHktb2JqZmlsZS5jIFwKIAlweXRob24vcHktcGFyYW0u YyBcCiAJcHl0aG9uL3B5LXByZXR0eXByaW50LmMgXApAQCAtMjA4Miw2ICsy MDg0LDEwIEBAIHB5LWxhenktc3RyaW5nLm86ICQoc3JjZGlyKS9weXRob24v cHktbGF6eS1zdHJpbmcuYwogCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdT KSAkKHNyY2RpcikvcHl0aG9uL3B5LWxhenktc3RyaW5nLmMKIAkkKFBPU1RD T01QSUxFKQogCitweS1uZXdvYmpmaWxlZXZlbnQubzogJChzcmNkaXIpL3B5 dGhvbi9weS1uZXdvYmpmaWxlZXZlbnQuYworCSQoQ09NUElMRSkgJChQWVRI T05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LW5ld29iamZpbGVldmVu dC5jCisJJChQT1NUQ09NUElMRSkKKwogcHktb2JqZmlsZS5vOiAkKHNyY2Rp cikvcHl0aG9uL3B5LW9iamZpbGUuYwogCSQoQ09NUElMRSkgJChQWVRIT05f Q0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LW9iamZpbGUuYwogCSQoUE9T VENPTVBJTEUpCkBAIC0yMTMwLDYgKzIxMzYsNyBAQCBweS12YWx1ZS5vOiAk KHNyY2RpcikvcHl0aG9uL3B5LXZhbHVlLmMKIAkkKENPTVBJTEUpICQoUFlU SE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCiAJJChQ T1NUQ09NUElMRSkKIAorCiAjCiAjIERlcGVuZGVuY3kgdHJhY2tpbmcuICBN b3N0IG9mIHRoaXMgaXMgY29uZGl0aW9uYWwgb24gR05VIE1ha2UgYmVpbmcK ICMgZm91bmQgYnkgY29uZmlndXJlOyBpZiBHTlUgTWFrZSBpcyBub3QgZm91 bmQsIHdlIGZhbGwgYmFjayB0byBhCmRpZmYgLS1naXQgYS9nZGIvZG9jL2dk Yi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwppbmRleCA1ODRhNTIw Li4xNTEyZWEzIDEwMDY0NAotLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisr KyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KQEAgLTIyMTQ3LDYgKzIyMTQ3LDEy IEBAIEVtaXRzIEBjb2Rle2dkYi5TaWduYWxFdmVudH0gd2hpY2ggZXh0ZW5k cyBAY29kZXtnZGIuU3RvcEV2ZW50fS4KIFRoaXMgZXZlbnQgaW5kaWNhdGVz IHRoYXQgdGhlIGluZmVyaW9yIG9yIG9uZSBvZiBpdHMgdGhyZWFkcyBoYXMg cmVjZWl2ZWQgYXMKIHNpZ25hbC4gIEBjb2Rle2dkYi5TaWduYWxFdmVudH0g aGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKIAorQGl0ZW0gZXZlbnRz Lm5ld29iamZpbGUKK0VtaXRzIEBjb2Rle2dkYi5OZXdPYmpGaWxlRXZlbnR9 IHdoaWNoIGluZGljYXRlcyB0aGF0IGEgbmV3IG9iamVjdC1maWxlIGhhcwor YmVlbiBsb2FkZWQgYnkgQHZhbHVle0dEQk59LgorCitEdXJpbmcgdGhlIGNh bGxiYWNrLCBgYGN1cnJlbnQgb2JqZmlsZScnIHdpbGwgYmUgc2V0IHRvIHRo ZSBuZXcgb2JqZWN0IGZpbGUuCisKIEB0YWJsZSBAY29kZQogQGRlZml2YXIg U2lnbmFsRXZlbnQgc3RvcF9zaWduYWwKIEEgc3RyaW5nIHJlcHJlc2VudGlu ZyB0aGUgc2lnbmFsIHJlY2VpdmVkIGJ5IHRoZSBpbmZlcmlvci4gIEEgbGlz dCBvZiBwb3NzaWJsZQpAQCAtMjI3ODksMTAgKzIyNzk1LDEwIEBAIFRoZSBm b2xsb3dpbmcgb2JqZmlsZS1yZWxhdGVkIGZ1bmN0aW9ucyBhcmUgYXZhaWxh YmxlIGluIHRoZQogCiBAZmluZGV4IGdkYi5jdXJyZW50X29iamZpbGUKIEBk ZWZ1biBjdXJyZW50X29iamZpbGUKLVdoZW4gYXV0by1sb2FkaW5nIGEgUHl0 aG9uIHNjcmlwdCAoQHB4cmVme0F1dG8tbG9hZGluZ30pLCBAdmFsdWV7R0RC Tn0KLXNldHMgdGhlIGBgY3VycmVudCBvYmpmaWxlJycgdG8gdGhlIGNvcnJl c3BvbmRpbmcgb2JqZmlsZS4gIFRoaXMKLWZ1bmN0aW9uIHJldHVybnMgdGhl IGN1cnJlbnQgb2JqZmlsZS4gIElmIHRoZXJlIGlzIG5vIGN1cnJlbnQgb2Jq ZmlsZSwKLXRoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtOb25lfS4KK1do ZW4gYXV0by1sb2FkaW5nIGEgUHl0aG9uIHNjcmlwdCAoQHB4cmVme0F1dG8t bG9hZGluZ30pIGFuZCBkdXJpbmcgbmV3CitvYmplY3QtZmlsZSBjYWxsYmFj a3MsIEB2YWx1ZXtHREJOfSBzZXRzIHRoZSBgYGN1cnJlbnQgb2JqZmlsZScn IHRvIHRoZQorY29ycmVzcG9uZGluZyBvYmpmaWxlLiAgVGhpcyBmdW5jdGlv biByZXR1cm5zIHRoZSBjdXJyZW50IG9iamZpbGUuICBJZgordGhlcmUgaXMg bm8gY3VycmVudCBvYmpmaWxlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgQGNv ZGV7Tm9uZX0uCiBAZW5kIGRlZnVuCiAKIEBmaW5kZXggZ2RiLm9iamZpbGVz CmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWV2ZW50LmggYi9nZGIvcHl0 aG9uL3B5LWV2ZW50LmgKaW5kZXggYmM5NTUyMS4uOWEzYmE4MiAxMDA2NDQK LS0tIGEvZ2RiL3B5dGhvbi9weS1ldmVudC5oCisrKyBiL2dkYi9weXRob24v cHktZXZlbnQuaApAQCAtMTA1LDYgKzEwNSw3IEBAIHR5cGVkZWYgc3RydWN0 CiAKIGV4dGVybiBpbnQgZW1pdF9jb250aW51ZV9ldmVudCAocHRpZF90IHB0 aWQpOwogZXh0ZXJuIGludCBlbWl0X2V4aXRlZF9ldmVudCAoTE9OR0VTVCBl eGl0X2NvZGUpOworZXh0ZXJuIGludCBlbWl0X25ld19vYmpmaWxlX2V2ZW50 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAKIGV4dGVybiBpbnQgZXZw eV9lbWl0X2V2ZW50IChQeU9iamVjdCAqZXZlbnQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXZlbnRyZWdpc3RyeV9vYmplY3QgKnJlZ2lzdHJ5 KTsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktZXZlbnRzLmggYi9nZGIv cHl0aG9uL3B5LWV2ZW50cy5oCmluZGV4IDZkNGRhZTUuLjljNDJlMzkgMTAw NjQ0Ci0tLSBhL2dkYi9weXRob24vcHktZXZlbnRzLmgKKysrIGIvZ2RiL3B5 dGhvbi9weS1ldmVudHMuaApAQCAtNDUsNiArNDUsNyBAQCB0eXBlZGVmIHN0 cnVjdAogICBldmVudHJlZ2lzdHJ5X29iamVjdCAqc3RvcDsKICAgZXZlbnRy ZWdpc3RyeV9vYmplY3QgKmNvbnQ7CiAgIGV2ZW50cmVnaXN0cnlfb2JqZWN0 ICpleGl0ZWQ7CisgIGV2ZW50cmVnaXN0cnlfb2JqZWN0ICpuZXdvYmpmaWxl OwogCiAgIFB5T2JqZWN0ICptb2R1bGU7CiAKZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vcHktZXZ0cy5jIGIvZ2RiL3B5dGhvbi9weS1ldnRzLmMKaW5kZXgg NTBjMDVmMy4uYzhkMTA0NCAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weS1l dnRzLmMKKysrIGIvZ2RiL3B5dGhvbi9weS1ldnRzLmMKQEAgLTU4LDYgKzU4 LDkgQEAgZ2RicHlfaW5pdGlhbGl6ZV9weV9ldmVudHMgKHZvaWQpCiAgIGlm IChhZGRfbmV3X3JlZ2lzdHJ5ICgmZ2RiX3B5X2V2ZW50cy5leGl0ZWQsICJl eGl0ZWQiKSA8IDApCiAgICAgZ290byBmYWlsOwogCisgIGlmIChhZGRfbmV3 X3JlZ2lzdHJ5ICgmZ2RiX3B5X2V2ZW50cy5uZXdvYmpmaWxlLCAibmV3b2Jq ZmlsZSIpIDwgMCkKKyAgICBnb3RvIGZhaWw7CisKICAgUHlfSU5DUkVGIChn ZGJfcHlfZXZlbnRzLm1vZHVsZSk7CiAgIGlmIChQeU1vZHVsZV9BZGRPYmpl Y3QgKGdkYl9tb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJl dmVudHMiLApkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5j IGIvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jCmluZGV4IDQ1ZjVmMDQuLjBk MWQzY2UgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwor KysgYi9nZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMKQEAgLTIyLDYgKzIyLDcg QEAKICNpbmNsdWRlICJnZGJjb3JlLmgiCiAjaW5jbHVkZSAiZ2RidGhyZWFk LmgiCiAjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKyNpbmNsdWRlICJvYmpmaWxl cy5oIgogI2luY2x1ZGUgIm9ic2VydmVyLmgiCiAjaW5jbHVkZSAicHl0aG9u LWludGVybmFsLmgiCiAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgpAQCAtMTI5 LDYgKzEzMCwyOSBAQCBweXRob25faW5mZXJpb3JfZXhpdCAoc3RydWN0IGlu ZmVyaW9yICppbmYpCiAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKIH0KIAor LyogQ2FsbGJhY2sgdXNlZCB0byBub3RpZnkgUHl0aG9uIGxpc3RlbmVycyBh Ym91dCBuZXcgb2JqZmlsZXMgbG9hZGVkIGluIHRoZQorICAgaW5mZXJpb3Iu IFB5dGhvbiBnbG9iYWwgdmFyaWFibGUgJ2dkYi5jdXJyZW50X29iamZpbGUg KCknIHdpbGwgYmUgc2V0CisgICBkdXJpbmcgdGhlIG5vdGlmaWNhdGlvbnMu ICAqLworCitzdGF0aWMgdm9pZAorcHl0aG9uX25ld19vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK3sKKyAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXA7CisKKyAgaWYgKG9iamZpbGUgPT0gTlVMTCkKKwlyZXR1cm47CisK KyAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfb2JqZmlsZV9h cmNoIChvYmpmaWxlKSwgY3VycmVudF9sYW5ndWFnZSk7CisKKyAgZ2RicHlf Y3VycmVudF9vYmpmaWxlID0gb2JqZmlsZTsKKworICBpZiAoZW1pdF9uZXdf b2JqZmlsZV9ldmVudCAob2JqZmlsZSkgPCAwKQorICAgIGdkYnB5X3ByaW50 X3N0YWNrICgpOworCisgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAgZ2Ri cHlfY3VycmVudF9vYmpmaWxlID0gTlVMTDsKK30KKwogLyogUmV0dXJuIGEg Ym9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBQeXRob24gb2JqZWN0IG9mIHR5 cGUgSW5mZXJpb3IKICAgIHJlcHJlc2VudGluZyBJTkZFUklPUi4gIElmIHRo ZSBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLAogICAgcmV0dXJu IGl0LCAgb3RoZXJ3aXNlLCBjcmVhdGUgaXQuICBSZXR1cm4gTlVMTCBvbiBm YWlsdXJlLiAgKi8KQEAgLTY2OSw2ICs2OTMsNyBAQCBnZGJweV9pbml0aWFs aXplX2luZmVyaW9yICh2b2lkKQogICBvYnNlcnZlcl9hdHRhY2hfbm9ybWFs X3N0b3AgKHB5dGhvbl9vbl9ub3JtYWxfc3RvcCk7CiAgIG9ic2VydmVyX2F0 dGFjaF90YXJnZXRfcmVzdW1lZCAocHl0aG9uX29uX3Jlc3VtZSk7CiAgIG9i c2VydmVyX2F0dGFjaF9pbmZlcmlvcl9leGl0IChweXRob25faW5mZXJpb3Jf ZXhpdCk7CisgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAocHl0aG9u X25ld19vYmpmaWxlKTsKIAogICBpZiAoUHlUeXBlX1JlYWR5ICgmbWVtYnVm X29iamVjdF90eXBlKSA8IDApCiAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9weS1uZXdvYmpmaWxlZXZlbnQuYyBiL2dkYi9weXRob24v cHktbmV3b2JqZmlsZWV2ZW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMjBlMmIzMQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9w eXRob24vcHktbmV3b2JqZmlsZWV2ZW50LmMKQEAgLTAsMCArMSw1MyBAQAor LyogUHl0aG9uIGludGVyZmFjZSB0byBuZXcgb2JqZWN0IGZpbGUgbG9hZGlu ZyBldmVudHMuCisKKyAgIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5j bHVkZSAicHktZXZlbnQuaCIKKworc3RhdGljIFB5VHlwZU9iamVjdCBuZXdf b2JqZmlsZV9ldmVudF9vYmplY3RfdHlwZTsKKworUHlPYmplY3QgKgorY3Jl YXRlX25ld19vYmpmaWxlX2V2ZW50X29iamVjdCAodm9pZCkKK3sKKyAgcmV0 dXJuIGNyZWF0ZV9ldmVudF9vYmplY3QgKCZuZXdfb2JqZmlsZV9ldmVudF9v YmplY3RfdHlwZSk7Cit9CisKKy8qIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNo IG5vdGlmaWVzIG9ic2VydmVycyB3aGVuIGEgbmV3IG9iamZpbGUgZXZlbnQg b2NjdXJzLgorICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBhIG5ldyBQ eXRob24gbmV3X29iamZpbGUgZXZlbnQgb2JqZWN0LgorICAgUmV0dXJuIC0x IGlmIGVtaXQgZmFpbHMuICAqLworCitpbnQKK2VtaXRfbmV3X29iamZpbGVf ZXZlbnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQoreworICBQeU9iamVj dCAqZXZlbnQ7CisKKyAgaWYgKGV2cmVncHlfbm9fbGlzdGVuZXJzX3AgKGdk Yl9weV9ldmVudHMubmV3b2JqZmlsZSkpCisgICAgcmV0dXJuIDA7CisKKyAg ZXZlbnQgPSBjcmVhdGVfbmV3X29iamZpbGVfZXZlbnRfb2JqZWN0ICgpOwor ICBpZiAoZXZlbnQpCisgICAgcmV0dXJuIGV2cHlfZW1pdF9ldmVudCAoZXZl bnQsIGdkYl9weV9ldmVudHMubmV3b2JqZmlsZSk7CisgIHJldHVybiAtMTsK K30KKworR0RCUFlfTkVXX0VWRU5UX1RZUEUgKG5ld19vYmpmaWxlLAorICAg ICAgICAgICAgICAgICAgICAgICJnZGIuTmV3T2JqRmlsZUV2ZW50IiwKKyAg ICAgICAgICAgICAgICAgICAgICAiTmV3T2JqRmlsZUV2ZW50IiwKKyAgICAg ICAgICAgICAgICAgICAgICAiR0RCIG5ldyBvYmplY3QgZmlsZSBldmVudCBv YmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X29iamVjdF90 eXBlLAorICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyk7CmRpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhv bi9weXRob24taW50ZXJuYWwuaAppbmRleCBkM2NiNzg4Li5jYzkxMDhmIDEw MDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCisrKyBi L2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKQEAgLTIwNyw2ICsyMDcs NyBAQCB2b2lkIGdkYnB5X2luaXRpYWxpemVfYnJlYWtwb2ludF9ldmVudCAo dm9pZCk7CiB2b2lkIGdkYnB5X2luaXRpYWxpemVfY29udGludWVfZXZlbnQg KHZvaWQpOwogdm9pZCBnZGJweV9pbml0aWFsaXplX2V4aXRlZF9ldmVudCAo dm9pZCk7CiB2b2lkIGdkYnB5X2luaXRpYWxpemVfdGhyZWFkX2V2ZW50ICh2 b2lkKTsKK3ZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9uZXdfb2JqZmlsZV9ldmVu dCAodm9pZCk7CiAKIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfcHlf ZGVjcmVmIChQeU9iamVjdCAqcHkpOwogCkBAIC0yMTUsNiArMjE2LDcgQEAg c3RydWN0IGNsZWFudXAgKmVuc3VyZV9weXRob25fZW52IChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKIAogZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpweXRo b25fZ2RiYXJjaDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVm biAqcHl0aG9uX2xhbmd1YWdlOworZXh0ZXJuIHN0cnVjdCBvYmpmaWxlICpn ZGJweV9jdXJyZW50X29iamZpbGU7CiAKIC8qIFVzZSB0aGlzIGFmdGVyIGEg VFJZX0VYQ0VQVCB0byB0aHJvdyB0aGUgYXBwcm9wcmlhdGUgUHl0aG9uCiAg ICBleGNlcHRpb24uICAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRo b24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKaW5kZXggOGE3YmM2Ni4uYzk2 OTg0YyAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYworKysgYi9n ZGIvcHl0aG9uL3B5dGhvbi5jCkBAIC04MTEsOCArODExLDkgQEAgZ2RicHlf cHJvZ3NwYWNlcyAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVz ZWQyKQogCiAvKiBUaGUgImN1cnJlbnQiIG9iamZpbGUuICBUaGlzIGlzIHNl dCB3aGVuIGdkYiBkZXRlY3RzIHRoYXQgYSBuZXcKICAgIG9iamZpbGUgaGFz IGJlZW4gbG9hZGVkLiAgSXQgaXMgb25seSBzZXQgZm9yIHRoZSBkdXJhdGlv biBvZiBhIGNhbGwgdG8KLSAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlOyBpdCBpcyBOVUxMIGF0IG90aGVyIHRpbWVzLiAgKi8KLXN0YXRp YyBzdHJ1Y3Qgb2JqZmlsZSAqZ2RicHlfY3VycmVudF9vYmpmaWxlOworICAg c291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgYW5kIG5ld19vYmpm aWxlIGNhbGxiYWNrczsgaXQgaXMgTlVMTCBhdAorICAgb3RoZXIgdGltZXMu ICAqLworc3RydWN0IG9iamZpbGUgKmdkYnB5X2N1cnJlbnRfb2JqZmlsZTsK IAogLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQg dGhlbiByZWFkIFNUUkVBTSxGSUxFIGFzCiAgICBQeXRob24gY29kZS4gICov CkBAIC0xMDc0LDYgKzEwNzUsNyBAQCBFbmFibGVzIG9yIGRpc2FibGVzIHBy aW50aW5nIG9mIFB5dGhvbiBzdGFjayB0cmFjZXMuIiksCiAgIGdkYnB5X2lu aXRpYWxpemVfY29udGludWVfZXZlbnQgKCk7CiAgIGdkYnB5X2luaXRpYWxp emVfZXhpdGVkX2V2ZW50ICgpOwogICBnZGJweV9pbml0aWFsaXplX3RocmVh ZF9ldmVudCAoKTsKKyAgZ2RicHlfaW5pdGlhbGl6ZV9uZXdfb2JqZmlsZV9l dmVudCAoKSA7CiAKICAgUHlSdW5fU2ltcGxlU3RyaW5nICgiaW1wb3J0IGdk YiIpOwogICBQeVJ1bl9TaW1wbGVTdHJpbmcgKCJnZGIucHJldHR5X3ByaW50 ZXJzID0gW10iKTsKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1ldmVudHMtc2hsaWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1ldmVudHMtc2hsaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yYTE3YmJmCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy1zaGxpYi5jCkBAIC0w LDAgKzEsMjAgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAyMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworCisKK3ZvaWQgZG9fbm90aGluZyAodm9pZCkge30KKwpk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50 cy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy5jCmlu ZGV4IGNlYjY5N2UuLjFjZjdjYzcgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1ldmVudHMuYworKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktZXZlbnRzLmMKQEAgLTE2LDYgKzE2LDggQEAKICAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICovCiAKK2V4dGVybiB2b2lk IGRvX25vdGhpbmcgKHZvaWQpIDsKKwogaW50IHNlY29uZCgpewogICByZXR1 cm4gMTI7CiB9CkBAIC0yNSw1ICsyNyw2IEBAIGludCBmaXJzdCgpewogfQog CiBpbnQgbWFpbiAoKXsKKyAgZG9fbm90aGluZygpIDsKICAgcmV0dXJuIGZp cnN0KCk7CiB9CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktZXZlbnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1ldmVudHMuZXhwCmluZGV4IGU1ZDZkYWYuLjExZDdlMDAgMTAwNjQ0Ci0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMuZXhwCisr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMuZXhwCkBA IC0yNCwyMyArMjQsMzkgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7CiAKIGxv YWRfbGliIGdkYi1weXRob24uZXhwCiAKK3NldCBsaWJmaWxlICJweS1ldmVu dHMtc2hsaWIiCitzZXQgbGlic3JjICAkc3JjZGlyLyRzdWJkaXIvJGxpYmZp bGUuYworc2V0IGxpYl9zbCAgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxlLnNv CitzZXQgbGliX29wdHMgIGRlYnVnCisKIHNldCB0ZXN0ZmlsZSAicHktZXZl bnRzIgogc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwogc2V0IGJpbmZpbGUg JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorc2V0IGV4ZWNfb3B0 cyBbbGlzdCBkZWJ1ZyBzaGxpYj0kbGliX3NsXQogc2V0IHB5ZmlsZSAke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LnB5CiAKLWlmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7 c3JjZmlsZX1dIH0geworaWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmls ZX1dIHsKICAgICByZXR1cm4gLTEKIH0KIAoraWYgeyBbZ2RiX2NvbXBpbGVf c2hsaWIgJGxpYnNyYyAkbGliX3NsICRsaWJfb3B0c10gIT0gIiIKKyAgICAg fHwgW2dkYl9jb21waWxlICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAkYmlu ZmlsZSBleGVjdXRhYmxlICRleGVjX29wdHNdICE9ICIifSB7CisgICAgdW50 ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIGVpdGhlciAkbGlic3JjIG9yICRz cmNkaXIvJHN1YmRpci8kc3JjZmlsZS4iCisgICAgcmV0dXJuIC0xCit9CisK KyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KK2NsZWFuX3Jlc3RhcnQgJHt0 ZXN0ZmlsZX0KKwogaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250 aW51ZSB9CiAKIGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGV4ZWNmaWxl ICgnJHtweWZpbGV9JykiICIiCiAKLWlmICFbcnVudG9fbWFpbiBdIHRoZW4g ewotICAgIGZhaWwgIkNhbid0IHJ1biB0byBtYWluIgotICAgIHJldHVybiAt MQotfQorZ2RiX3Rlc3QgIlRlc3RfTmV3b2JqX0V2ZW50cyIgIk5ldyBPYmpl Y3RGaWxlIEV2ZW50IHRlc3RlciByZWdpc3RlcmVkLiIgIlJlZ2lzdGVyIG5l dyBvYmpmaWxlIGV2ZW50IGhhbmRsZXIiCisKK2dkYl9icmVha3BvaW50ICJt YWluIiB7dGVtcG9yYXJ5fQorCitnZGJfdGVzdCAicnVuIiAiLipldmVudCB0 eXBlOiBuZXdfb2JqZmlsZS4qbmV3IG9iamZpbGUgbmFtZS4qIiAiTmV3IG9i amZpbGUgbm90aWZpY2F0aW9uIgogCiBnZGJfdGVzdCAiVGVzdF9FdmVudHMi ICJFdmVudCB0ZXN0ZXJzIHJlZ2lzdGVyZWQuIgogCmRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXZlbnRzLnB5IGIvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy5weQppbmRleCA5ZjA1Yjlm Li4xMmUzNmU4IDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktZXZlbnRzLnB5CisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1ldmVudHMucHkKQEAgLTQ4LDYgKzQ4LDE0IEBAIGRlZiBjb250aW51 ZV9oYW5kbGVyIChldmVudCk6CiAgICAgaWYgKCBldmVudC5pbmZlcmlvcl90 aHJlYWQgaXMgbm90IE5vbmUpIDoKICAgICAgICAgcHJpbnQgInRocmVhZCBu dW06ICVzIiAlIChldmVudC5pbmZlcmlvcl90aHJlYWQubnVtKTsKIAorZGVm IG5ld19vYmpmaWxlX2hhbmRsZXIgKGV2ZW50KToKKyAgICBpZiAoaXNpbnN0 YW5jZSAoZXZlbnQsIGdkYi5OZXdPYmpGaWxlRXZlbnQpKToKKyAgICAgICAg cHJpbnQgImV2ZW50IHR5cGU6IG5ld19vYmpmaWxlIgorICAgIGlmIChnZGIu Y3VycmVudF9vYmpmaWxlICgpIGlzIG5vdCBOb25lKToKKyAgICAJcHJpbnQg Im5ldyBvYmpmaWxlIG5hbWU6ICVzIiAlIChnZGIuY3VycmVudF9vYmpmaWxl ICgpLmZpbGVuYW1lKQorICAgIGVsc2U6CisgICAgICAgIHByaW50ICJuZXcg b2JqZmlsZSBpcyBOb25lIgorCiBjbGFzcyB0ZXN0X2V2ZW50cyAoZ2RiLkNv bW1hbmQpOgogICAgICIiIlRlc3QgZXZlbnRzLiIiIgogCkBAIC02MiwzICs3 MCwxNSBAQCBjbGFzcyB0ZXN0X2V2ZW50cyAoZ2RiLkNvbW1hbmQpOgogICAg ICAgICBwcmludCAiRXZlbnQgdGVzdGVycyByZWdpc3RlcmVkLiIKIAogdGVz dF9ldmVudHMgKCkKKworY2xhc3MgdGVzdF9uZXdvYmpfZXZlbnRzIChnZGIu Q29tbWFuZCk6CisgICAgIiIiTmV3T2JqIGV2ZW50cy4iIiIKKworICAgIGRl ZiBfX2luaXRfXyAoc2VsZik6CisgICAgICAgIGdkYi5Db21tYW5kLl9faW5p dF9fIChzZWxmLCAidGVzdF9uZXdvYmpfZXZlbnRzIiwgZ2RiLkNPTU1BTkRf U1RBQ0spCisKKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5 KToKKyAgICAgICAgZ2RiLmV2ZW50cy5uZXdvYmpmaWxlLmNvbm5lY3QgKG5l d19vYmpmaWxlX2hhbmRsZXIpCisgICAgICAgIHByaW50ICJOZXcgT2JqZWN0 RmlsZSBFdmVudCB0ZXN0ZXIgcmVnaXN0ZXJlZC4iCisKK3Rlc3RfbmV3b2Jq X2V2ZW50cyAoKQo= --20cf3071cd14c9036404a3ed776e--