From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1333 invoked by alias); 20 Apr 2009 16:47:48 -0000 Received: (qmail 1310 invoked by uid 22791); 20 Apr 2009 16:47:45 -0000 X-SWARE-Spam-Status: No, hits=-0.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_102,J_CHICKENPOX_37,KAM_STOCKGEN,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.33.17) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 20 Apr 2009 16:47:39 +0000 Received: from wpaz24.hot.corp.google.com (wpaz24.hot.corp.google.com [172.24.198.88]) by smtp-out.google.com with ESMTP id n3KGlYIG002334 for ; Mon, 20 Apr 2009 17:47:35 +0100 Received: from qyk28 (qyk28.prod.google.com [10.241.83.156]) by wpaz24.hot.corp.google.com with ESMTP id n3KGl0FM004845 for ; Mon, 20 Apr 2009 09:47:33 -0700 Received: by qyk28 with SMTP id 28so168157qyk.23 for ; Mon, 20 Apr 2009 09:47:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.84.82 with SMTP id i18mr540051qcl.90.1240246050289; Mon, 20 Apr 2009 09:47:30 -0700 (PDT) In-Reply-To: <20090420131751.GA25075@caradoc.them.org> References: <20090406203920.CCD6F19C4EC@localhost> <1239225742.8871.145.camel@localhost.localdomain> <8ac60eac0904101205h76d8377cv843db8177e74f8af@mail.gmail.com> <8ac60eac0904171213p4c075224x5f5c3661d240f383@mail.gmail.com> <20090420131751.GA25075@caradoc.them.org> Date: Mon, 20 Apr 2009 16:47:00 -0000 Message-ID: <8ac60eac0904200947y2acca97arc1a0fc61530357a0@mail.gmail.com> Subject: Re: [patch][rfc] Allow GDB to search for the right libthread_db.so.1 From: Paul Pluzhnikov To: Paul Pluzhnikov , tromey@redhat.com, Thiago Jung Bauermann , gdb-patches ml , Eli Zaretskii Content-Type: multipart/mixed; boundary=00163646d53e4305630467ff49f3 X-System-Of-Record: true 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: 2009-04/txt/msg00513.txt.bz2 --00163646d53e4305630467ff49f3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3748 On Mon, Apr 20, 2009 at 6:17 AM, Daniel Jacobowitz wrote: > I have just a few minor comments on this. =A0Overall, I am heartily > in favor of the idea - I have carried a less elegant version of this > feature in the Debian GDB packages for two years or so. Could you tell a bit more about this? I thought out set up with multiple incompatible (WRT libthread_db) libc versions was more an exception than the rule. > On Fri, Apr 17, 2009 at 12:13:08PM -0700, Paul Pluzhnikov wrote: >> +#ifndef LIBTHREAD_DB_SO >> +#define LIBTHREAD_DB_SO "libthread_db.so.1" >> +#endif >> + >> +#ifndef LIBTHREAD_DB_SEARCH_PATH >> +#define LIBTHREAD_DB_SEARCH_PATH "" >> +#endif > > Do we intend to let anything override these? =A0Otherwise IMHO the > ifndef just confuses the issue. It might be reasonable to override these via CFLAGS. In particular, we intend to override the LIBTHREAD_DB_SEARCH_PATH with an appropriate local default. Of course we could just as easily patch the source. > Space before paren :-) Sorry about that. Fixed everywhere. >> + =A0if (!msym) >> + =A0 =A0msym =3D lookup_minimal_symbol ("__pthread_threads_events", NUL= L, NULL); > > Why is this symbol lookup necessary? =A0Is it accomplishing the same > thing that searching for a shared library matching "libpthread[-.]" > would? The symbol lookup works for statically linked executables (which we also have and would like to support). Searching for libpthread solib doesn't. On Sat, Apr 18, 2009 at 10:00 AM, Eli Zaretskii wrote: >> +Setting @code{libthread-db-search-path} is currently implemented >> +only for @sc{gnu}/Linux targets. > > In general, mentioning specific platforms in the manual is a > maintenance nightmare, because we must remember to make changes in the > manual to track the support of the feature on other platforms. =A0It is > much better to say that this feature is available "only on some > platforms." Done. > =A0That's assuming that on other platforms, using the > command will cause a suitable error message; does it? Yes: since the add_setshow... is not done on other platforms, you'll get the same error as if you tried to set unknown variable (which is actually quite confusing!): ./gdb -q -nx /bin/date (no debugging symbols found) (gdb) set libthread-db-search-path No symbol table is loaded. Use the "file" command. (gdb) > Btw, what are the Linux-specific aspects that this feature depends on? > Why can't we implement it on Solaris as well? This could quite easily be implemented on Solaris as well, although I expect that there is significantly smaller number of users who need this on Solaris. OTOH, anyone using glibc on Solaris will likely want it (if he debugs both glibc and native-libc binaries). Attached is a revised patch that fixes all the comments so far. Thanks, --=20 Paul Pluzhnikov 2009-04-20 Paul Pluzhnikov * gdb_thread_db.h (LIBTHREAD_DB_SEARCH_PATH): New define. (LIBTHREAD_DB_SO): Moved from linux-thread-db.c * linux-thread-db.c (libthread_db_search_path): New setting. (thread_db_handle): New variable (replaces using_thread_db). (try_thread_db_load_1): New function. (try_thread_db_load, thread_db_load_search): Likewise. (dladdr_to_soname): Likewise. (thread_db_load): Iterate over possibly multiple libthread_db's. (check_for_thread_db): Attempt to load new libthread_db. (thread_db_detach, thread_db_wait): Unload libthread_db. (thread_db_mourn_inferior): Likewise. (_initialize_thread_db): Add new libthread-db-search-path option. Defer loading of libthread_db to check_for_thread_db. doc/ChangeLog 2009-04-20 Paul Pluzhnikov * gdb.texinfo (Threads): Document libthread-db-search-path. --00163646d53e4305630467ff49f3 Content-Type: text/plain; charset=US-ASCII; name="gdb-thread-db.20090420.txt" Content-Disposition: attachment; filename="gdb-thread-db.20090420.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftrebpm10 Content-length: 26897 SW5kZXg6IGdkYl90aHJlYWRfZGIuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2dkYl90aHJlYWRfZGIuaCx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMgpkaWZmIC11IC1wIC11IC1yMS4x MiBnZGJfdGhyZWFkX2RiLmgKLS0tIGdkYl90aHJlYWRfZGIuaAkxOCBNYXIg MjAwOSAwODo1MToxMSAtMDAwMAkxLjEyCisrKyBnZGJfdGhyZWFkX2RiLmgJ MjAgQXByIDIwMDkgMTY6NDE6NTUgLTAwMDAKQEAgLTEsNSArMSwxNCBAQAog I2lmZGVmIEhBVkVfVEhSRUFEX0RCX0gKICNpbmNsdWRlIDx0aHJlYWRfZGIu aD4KKworI2lmbmRlZiBMSUJUSFJFQURfREJfU08KKyNkZWZpbmUgTElCVEhS RUFEX0RCX1NPICJsaWJ0aHJlYWRfZGIuc28uMSIKKyNlbmRpZgorCisjaWZu ZGVmIExJQlRIUkVBRF9EQl9TRUFSQ0hfUEFUSAorI2RlZmluZSBMSUJUSFJF QURfREJfU0VBUkNIX1BBVEggIiIKKyNlbmRpZgorCiAjZWxzZQogCiAvKiBD b3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDcsIDIwMDgsIDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkluZGV4OiBsaW51eC10aHJl YWQtZGIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL2xpbnV4LXRocmVhZC1kYi5jLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjU0CmRpZmYgLXUgLXAgLXUgLXIxLjU0IGxpbnV4LXRocmVh ZC1kYi5jCi0tLSBsaW51eC10aHJlYWQtZGIuYwkyNyBGZWIgMjAwOSAyMDoz NDo0MSAtMDAwMAkxLjU0CisrKyBsaW51eC10aHJlYWQtZGIuYwkyMCBBcHIg MjAwOSAxNjo0MTo1NSAtMDAwMApAQCAtMjYsMTMgKzI2LDE2IEBACiAjaW5j bHVkZSAiZ2RiX3RocmVhZF9kYi5oIgogCiAjaW5jbHVkZSAiYmZkLmgiCisj aW5jbHVkZSAiY29tbWFuZC5oIgogI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIK KyNpbmNsdWRlICJnZGJjbWQuaCIKICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIK ICNpbmNsdWRlICJpbmZlcmlvci5oIgogI2luY2x1ZGUgInN5bWZpbGUuaCIK ICNpbmNsdWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUgInRhcmdldC5oIgog I2luY2x1ZGUgInJlZ2NhY2hlLmgiCisjaW5jbHVkZSAic29saWIuaCIKICNp bmNsdWRlICJzb2xpYi1zdnI0LmgiCiAjaW5jbHVkZSAiZ2RiY29yZS5oIgog I2luY2x1ZGUgIm9ic2VydmVyLmgiCkBAIC00NCwxMCArNDcsNiBAQAogI2lu Y2x1ZGUgPGdudS9saWJjLXZlcnNpb24uaD4KICNlbmRpZgogCi0jaWZuZGVm IExJQlRIUkVBRF9EQl9TTwotI2RlZmluZSBMSUJUSFJFQURfREJfU08gImxp YnRocmVhZF9kYi5zby4xIgotI2VuZGlmCi0KIC8qIEdOVS9MaW51eCBsaWJ0 aHJlYWRfZGIgc3VwcG9ydC4KIAogICAgbGlidGhyZWFkX2RiIGlzIGEgbGli cmFyeSwgcHJvdmlkZWQgYWxvbmcgd2l0aCBsaWJwdGhyZWFkLnNvLCB3aGlj aApAQCAtNzQsMTQgKzczLDE3IEBACiAgICBvZiB0aGUgcHRpZF90IHByZXZl bnRzIHRocmVhZCBJRHMgY2hhbmdpbmcgd2hlbiBsaWJwdGhyZWFkIGlzCiAg ICBsb2FkZWQgb3IgdW5sb2FkZWQuICAqLwogCitzdGF0aWMgY2hhciAqbGli dGhyZWFkX2RiX3NlYXJjaF9wYXRoOworCiAvKiBJZiB3ZSdyZSBydW5uaW5n IG9uIEdOVS9MaW51eCwgd2UgbXVzdCBleHBsaWNpdGx5IGF0dGFjaCB0byBh bnkgbmV3CiAgICB0aHJlYWRzLiAgKi8KIAogLyogVGhpcyBtb2R1bGUncyB0 YXJnZXQgdmVjdG9yLiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyB0 aHJlYWRfZGJfb3BzOwogCi0vKiBOb24temVybyBpZiB3ZSdyZSB1c2luZyB0 aGlzIG1vZHVsZSdzIHRhcmdldCB2ZWN0b3IuICAqLwotc3RhdGljIGludCB1 c2luZ190aHJlYWRfZGI7CisvKiBIYW5kbGUgZnJvbSBkbG9wZW4gZm9yIGxp YnRocmVhZF9kYi5zby4gIE5vdCBOVUxMIGlmIHdlJ3JlIHVzaW5nIHRoaXMK KyAgIG1vZHVsZSdzIHRhcmdldCB2ZWN0b3IuICAqLworc3RhdGljIHZvaWQg KnRocmVhZF9kYl9oYW5kbGU7CiAKIC8qIE5vbi16ZXJvIGlmIHdlIGhhdmUg ZGV0ZXJtaW5lZCB0aGUgc2lnbmFscyB1c2VkIGJ5IHRoZSB0aHJlYWRzCiAg ICBsaWJyYXJ5LiAgKi8KQEAgLTM0NCw3ICszNDYsNyBAQCB0aHJlYWRfZGJf YXR0YWNoX2x3cCAocHRpZF90IHB0aWQpCiAgIHRkX3RocmluZm9fdCB0aTsK ICAgdGRfZXJyX2UgZXJyOwogCi0gIGlmICghdXNpbmdfdGhyZWFkX2RiKQor ICBpZiAodGhyZWFkX2RiX2hhbmRsZSA9PSBOVUxMKQogICAgIHJldHVybiAw OwogCiAgIC8qIFRoaXMgcHRpZCBjb21lcyBmcm9tIGxpbnV4LW5hdC5jLCB3 aGljaCBzaG91bGQgYWx3YXlzIGZpbGwgaW4gdGhlCkBAIC0zODUsNzEgKzM4 Nyw2IEBAIHZlcmJvc2VfZGxzeW0gKHZvaWQgKmhhbmRsZSwgY29uc3QgY2hh ciAKICAgcmV0dXJuIHN5bTsKIH0KIAotc3RhdGljIGludAotdGhyZWFkX2Ri X2xvYWQgKHZvaWQpCi17Ci0gIHZvaWQgKmhhbmRsZTsKLSAgdGRfZXJyX2Ug ZXJyOwotCi0gIGhhbmRsZSA9IGRsb3BlbiAoTElCVEhSRUFEX0RCX1NPLCBS VExEX05PVyk7Ci0gIGlmIChoYW5kbGUgPT0gTlVMTCkKLSAgICB7Ci0gICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3RkZXJyLCAiXG5cbmRsb3BlbiBm YWlsZWQgb24gJyVzJyAtICVzXG4iLAotCQkJTElCVEhSRUFEX0RCX1NPLCBk bGVycm9yICgpKTsKLSAgICAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRl cnIsCi0JCQkiR0RCIHdpbGwgbm90IGJlIGFibGUgdG8gZGVidWcgcHRocmVh ZHMuXG5cbiIpOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gIC8qIElu aXRpYWxpemUgcG9pbnRlcnMgdG8gdGhlIGR5bmFtaWMgbGlicmFyeSBmdW5j dGlvbnMgd2Ugd2lsbCB1c2UuCi0gICAgIEVzc2VudGlhbCBmdW5jdGlvbnMg Zmlyc3QuICAqLwotCi0gIHRkX2luaXRfcCA9IHZlcmJvc2VfZGxzeW0gKGhh bmRsZSwgInRkX2luaXQiKTsKLSAgaWYgKHRkX2luaXRfcCA9PSBOVUxMKQot ICAgIHJldHVybiAwOwotCi0gIHRkX3RhX25ld19wID0gdmVyYm9zZV9kbHN5 bSAoaGFuZGxlLCAidGRfdGFfbmV3Iik7Ci0gIGlmICh0ZF90YV9uZXdfcCA9 PSBOVUxMKQotICAgIHJldHVybiAwOwotCi0gIHRkX3RhX21hcF9pZDJ0aHJf cCA9IHZlcmJvc2VfZGxzeW0gKGhhbmRsZSwgInRkX3RhX21hcF9pZDJ0aHIi KTsKLSAgaWYgKHRkX3RhX21hcF9pZDJ0aHJfcCA9PSBOVUxMKQotICAgIHJl dHVybiAwOwotCi0gIHRkX3RhX21hcF9sd3AydGhyX3AgPSB2ZXJib3NlX2Rs c3ltIChoYW5kbGUsICJ0ZF90YV9tYXBfbHdwMnRociIpOwotICBpZiAodGRf dGFfbWFwX2x3cDJ0aHJfcCA9PSBOVUxMKQotICAgIHJldHVybiAwOwotCi0g IHRkX3RhX3Rocl9pdGVyX3AgPSB2ZXJib3NlX2Rsc3ltIChoYW5kbGUsICJ0 ZF90YV90aHJfaXRlciIpOwotICBpZiAodGRfdGFfdGhyX2l0ZXJfcCA9PSBO VUxMKQotICAgIHJldHVybiAwOwotCi0gIHRkX3Rocl92YWxpZGF0ZV9wID0g dmVyYm9zZV9kbHN5bSAoaGFuZGxlLCAidGRfdGhyX3ZhbGlkYXRlIik7Ci0g IGlmICh0ZF90aHJfdmFsaWRhdGVfcCA9PSBOVUxMKQotICAgIHJldHVybiAw OwotCi0gIHRkX3Rocl9nZXRfaW5mb19wID0gdmVyYm9zZV9kbHN5bSAoaGFu ZGxlLCAidGRfdGhyX2dldF9pbmZvIik7Ci0gIGlmICh0ZF90aHJfZ2V0X2lu Zm9fcCA9PSBOVUxMKQotICAgIHJldHVybiAwOwotCi0gIC8qIEluaXRpYWxp emUgdGhlIGxpYnJhcnkuICAqLwotICBlcnIgPSB0ZF9pbml0X3AgKCk7Ci0g IGlmIChlcnIgIT0gVERfT0spCi0gICAgewotICAgICAgd2FybmluZyAoXygi Q2Fubm90IGluaXRpYWxpemUgbGlidGhyZWFkX2RiOiAlcyIpLCB0aHJlYWRf ZGJfZXJyX3N0ciAoZXJyKSk7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0K LSAgLyogVGhlc2UgYXJlIG5vdCBlc3NlbnRpYWwuICAqLwotICB0ZF90YV9l dmVudF9hZGRyX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGFfZXZlbnRfYWRk ciIpOwotICB0ZF90YV9zZXRfZXZlbnRfcCA9IGRsc3ltIChoYW5kbGUsICJ0 ZF90YV9zZXRfZXZlbnQiKTsKLSAgdGRfdGFfZXZlbnRfZ2V0bXNnX3AgPSBk bHN5bSAoaGFuZGxlLCAidGRfdGFfZXZlbnRfZ2V0bXNnIik7Ci0gIHRkX3Ro cl9ldmVudF9lbmFibGVfcCA9IGRsc3ltIChoYW5kbGUsICJ0ZF90aHJfZXZl bnRfZW5hYmxlIik7Ci0gIHRkX3Rocl90bHNfZ2V0X2FkZHJfcCA9IGRsc3lt IChoYW5kbGUsICJ0ZF90aHJfdGxzX2dldF9hZGRyIik7Ci0KLSAgcmV0dXJu IDE7Ci19Ci0KIHN0YXRpYyB0ZF9lcnJfZQogZW5hYmxlX3RocmVhZF9ldmVu dCAodGRfdGhyYWdlbnRfdCAqdGhyZWFkX2FnZW50LCBpbnQgZXZlbnQsIENP UkVfQUREUiAqYnApCiB7CkBAIC01NDEsNiArNDc4LDI3NSBAQCBlbmFibGVf dGhyZWFkX2V2ZW50X3JlcG9ydGluZyAodm9pZCkKICAgICB9CiB9CiAKKy8q IEF0dGVtcHQgdG8gaW5pdGlhbGl6ZSBkbG9wZW4oKWVkIGxpYnRocmVhZF9k YiwgZGVzY3JpYmVkIGJ5IEhBTkRMRS4KKyAgIFJldHVybiAxIG9uIHN1Y2Nl c3MuCisgICBGYWlsdXJlIGNvdWxkIGhhcHBlbiBpZiBsaWJ0aHJlYWRfZGIg ZG9lcyBub3QgaGF2ZSBzeW1ib2xzIHdlIGV4cGVjdCwKKyAgIG9yIHdoZW4g aXQgcmVmdXNlcyB0byB3b3JrIHdpdGggdGhlIGN1cnJlbnQgaW5mZXJpb3Ig KGUuZy4gZHVlIHRvCisgICB2ZXJzaW9uIG1pc21hdGNoIGJldHdlZW4gbGli dGhyZWFkX2RiIGFuZCBsaWJwdGhyZWFkKS4gICovCisKK3N0YXRpYyBpbnQK K3RyeV90aHJlYWRfZGJfbG9hZF8xICh2b2lkICpoYW5kbGUpCit7CisgIHRk X2Vycl9lIGVycjsKKworICAvKiBJbml0aWFsaXplIHBvaW50ZXJzIHRvIHRo ZSBkeW5hbWljIGxpYnJhcnkgZnVuY3Rpb25zIHdlIHdpbGwgdXNlLgorICAg ICBFc3NlbnRpYWwgZnVuY3Rpb25zIGZpcnN0LiAgKi8KKworICB0ZF9pbml0 X3AgPSB2ZXJib3NlX2Rsc3ltIChoYW5kbGUsICJ0ZF9pbml0Iik7CisgIGlm ICh0ZF9pbml0X3AgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICBlcnIg PSB0ZF9pbml0X3AgKCk7CisgIGlmIChlcnIgIT0gVERfT0spCisgICAgewor ICAgICAgd2FybmluZyAoXygiQ2Fubm90IGluaXRpYWxpemUgbGlidGhyZWFk X2RiOiAlcyIpLCB0aHJlYWRfZGJfZXJyX3N0ciAoZXJyKSk7CisgICAgICBy ZXR1cm4gMDsKKyAgICB9CisKKyAgdGRfdGFfbmV3X3AgPSB2ZXJib3NlX2Rs c3ltIChoYW5kbGUsICJ0ZF90YV9uZXciKTsKKyAgaWYgKHRkX3RhX25ld19w ID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyAgLyogSW5pdGlhbGl6ZSB0 aGUgc3RydWN0dXJlIHRoYXQgaWRlbnRpZmllcyB0aGUgY2hpbGQgcHJvY2Vz cy4gICovCisgIHByb2NfaGFuZGxlLnB0aWQgPSBpbmZlcmlvcl9wdGlkOwor CisgIC8qIE5vdyBhdHRlbXB0IHRvIG9wZW4gYSBjb25uZWN0aW9uIHRvIHRo ZSB0aHJlYWQgbGlicmFyeS4gICovCisgIGVyciA9IHRkX3RhX25ld19wICgm cHJvY19oYW5kbGUsICZ0aHJlYWRfYWdlbnQpOworICBpZiAoZXJyICE9IFRE X09LKQorICAgIHsKKyAgICAgIHRkX3RhX25ld19wID0gTlVMTDsKKyAgICAg IGlmIChpbmZvX3ZlcmJvc2UpCisJcHJpbnRmX3VuZmlsdGVyZWQgKF8oInRk X3RhX25ldyBmYWlsZWQ6ICVzXG4iKSwKKwkJCSAgIHRocmVhZF9kYl9lcnJf c3RyIChlcnIpKTsKKyAgICAgIGVsc2UKKyAgICAgICAgc3dpdGNoIChlcnIp CisgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBURF9OT0xJQlRIUkVB RDoKKyNpZmRlZiBUSFJFQURfREJfSEFTX1REX1ZFUlNJT04KKyAgICAgICAg ICAgIGNhc2UgVERfVkVSU0lPTjoKKyNlbmRpZgorICAgICAgICAgICAgICAv KiBUaGUgZXJyb3JzIGFib3ZlIGFyZSBub3QgdW5leHBlY3RlZCBhbmQgc2ls ZW50bHkgaWdub3JlZDoKKyAgICAgICAgICAgICAgICAgdGhleSBqdXN0IG1l YW4gd2UgaGF2ZW4ndCBmb3VuZCBjb3JyZWN0IHZlcnNpb24gb2YKKyAgICAg ICAgICAgICAgICAgbGlidGhyZWFkX2RiIHlldC4gICovCisgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg ICAgd2FybmluZyAoXygidGRfdGFfbmV3IGZhaWxlZDogJXMiKSwgdGhyZWFk X2RiX2Vycl9zdHIgKGVycikpOworICAgICAgICAgIH0KKyAgICAgIHJldHVy biAwOworICAgIH0KKworICB0ZF90YV9tYXBfaWQydGhyX3AgPSB2ZXJib3Nl X2Rsc3ltIChoYW5kbGUsICJ0ZF90YV9tYXBfaWQydGhyIik7CisgIGlmICh0 ZF90YV9tYXBfaWQydGhyX3AgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKwor ICB0ZF90YV9tYXBfbHdwMnRocl9wID0gdmVyYm9zZV9kbHN5bSAoaGFuZGxl LCAidGRfdGFfbWFwX2x3cDJ0aHIiKTsKKyAgaWYgKHRkX3RhX21hcF9sd3Ay dGhyX3AgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICB0ZF90YV90aHJf aXRlcl9wID0gdmVyYm9zZV9kbHN5bSAoaGFuZGxlLCAidGRfdGFfdGhyX2l0 ZXIiKTsKKyAgaWYgKHRkX3RhX3Rocl9pdGVyX3AgPT0gTlVMTCkKKyAgICBy ZXR1cm4gMDsKKworICB0ZF90aHJfdmFsaWRhdGVfcCA9IHZlcmJvc2VfZGxz eW0gKGhhbmRsZSwgInRkX3Rocl92YWxpZGF0ZSIpOworICBpZiAodGRfdGhy X3ZhbGlkYXRlX3AgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICB0ZF90 aHJfZ2V0X2luZm9fcCA9IHZlcmJvc2VfZGxzeW0gKGhhbmRsZSwgInRkX3Ro cl9nZXRfaW5mbyIpOworICBpZiAodGRfdGhyX2dldF9pbmZvX3AgPT0gTlVM TCkKKyAgICByZXR1cm4gMDsKKworICAvKiBUaGVzZSBhcmUgbm90IGVzc2Vu dGlhbC4gICovCisgIHRkX3RhX2V2ZW50X2FkZHJfcCA9IGRsc3ltIChoYW5k bGUsICJ0ZF90YV9ldmVudF9hZGRyIik7CisgIHRkX3RhX3NldF9ldmVudF9w ID0gZGxzeW0gKGhhbmRsZSwgInRkX3RhX3NldF9ldmVudCIpOworICB0ZF90 YV9ldmVudF9nZXRtc2dfcCA9IGRsc3ltIChoYW5kbGUsICJ0ZF90YV9ldmVu dF9nZXRtc2ciKTsKKyAgdGRfdGhyX2V2ZW50X2VuYWJsZV9wID0gZGxzeW0g KGhhbmRsZSwgInRkX3Rocl9ldmVudF9lbmFibGUiKTsKKyAgdGRfdGhyX3Rs c19nZXRfYWRkcl9wID0gZGxzeW0gKGhhbmRsZSwgInRkX3Rocl90bHNfZ2V0 X2FkZHIiKTsKKworICBwcmludGZfdW5maWx0ZXJlZCAoXygiW1RocmVhZCBk ZWJ1Z2dpbmcgdXNpbmcgbGlidGhyZWFkX2RiIGVuYWJsZWRdXG4iKSk7CisK KyAgLyogVGhlIHRocmVhZCBsaWJyYXJ5IHdhcyBkZXRlY3RlZC4gIEFjdGl2 YXRlIHRoZSB0aHJlYWRfZGIgdGFyZ2V0LiAgKi8KKyAgcHVzaF90YXJnZXQg KCZ0aHJlYWRfZGJfb3BzKTsKKyAgdGhyZWFkX2RiX2hhbmRsZSA9IGhhbmRs ZTsKKworICBlbmFibGVfdGhyZWFkX2V2ZW50X3JlcG9ydGluZyAoKTsKKyAg dGhyZWFkX2RiX2ZpbmRfbmV3X3RocmVhZHNfMSAoKTsKKyAgcmV0dXJuIDE7 Cit9CisKKy8qIExvb2t1cCBhIGxpYnJhcnkgaW4gd2hpY2ggZ2l2ZW4gc3lt Ym9sIHJlc2lkZXMuCisgICBOb3RlOiB0aGlzIGlzIGxvb2tpbmcgaW4gR0RC IHByb2Nlc3MsIG5vdCBpbiB0aGUgaW5mZXJpb3IuCisgICBSZXR1cm5zIGxp YnJhcnkgbmFtZSwgb3IgTlVMTC4gICovCisKK3N0YXRpYyBjb25zdCBjaGFy ICoKK2RsYWRkcl90b19zb25hbWUgKGNvbnN0IHZvaWQgKmFkZHIpCit7Cisg IERsX2luZm8gaW5mbzsKKworICBpZiAoZGxhZGRyIChhZGRyLCAmaW5mbykg IT0gMCkKKyAgICByZXR1cm4gaW5mby5kbGlfZm5hbWU7CisgIHJldHVybiBO VUxMOworfQorCisvKiBBdHRlbXB0IHRvIHVzZSBMSUJSQVJZIGFzIGxpYnRo cmVhZF9kYi4gIExJQlJBUlkgY291bGQgYmUgYWJzb2x1dGUsCisgICByZWxh dGl2ZSwgb3IganVzdCBMSUJUSFJFQURfREIuICAqLworCitzdGF0aWMgaW50 Cit0cnlfdGhyZWFkX2RiX2xvYWQgKGNvbnN0IGNoYXIgKmxpYnJhcnkpCit7 CisgIHZvaWQgKmhhbmRsZTsKKworICBpZiAoaW5mb192ZXJib3NlKQorICAg IHByaW50Zl91bmZpbHRlcmVkIChfKCJUcnlpbmcgaG9zdCBsaWJ0aHJlYWRf ZGIgbGlicmFyeTogJXMuXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAg bGlicmFyeSk7CisgIGhhbmRsZSA9IGRsb3BlbiAobGlicmFyeSwgUlRMRF9O T1cpOworICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgeworICAgICAgaWYg KGluZm9fdmVyYm9zZSkKKwlwcmludGZfdW5maWx0ZXJlZCAoXygiZGxvcGVu IGZhaWxlZDogJXMuXG4iKSwgZGxlcnJvciAoKSk7CisgICAgICByZXR1cm4g MDsKKyAgICB9CisKKyAgaWYgKGluZm9fdmVyYm9zZSAmJiBzdHJjaHIgKGxp YnJhcnksICcvJykgPT0gTlVMTCkKKyAgICB7CisgICAgICB2b2lkICp0ZF9p bml0OworCisgICAgICB0ZF9pbml0ID0gZGxzeW0gKGhhbmRsZSwgInRkX2lu aXQiKTsKKyAgICAgIGlmICh0ZF9pbml0ICE9IE5VTEwpCisgICAgICAgIHsK KyAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBsaWJwYXRoID0gZGxhZGRy X3RvX3NvbmFtZSAodGRfaW5pdCk7CisKKyAgICAgICAgICBpZiAobGlicGF0 aCAhPSBOVUxMKQorICAgICAgICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8o Ikhvc3QgJXMgcmVzb2x2ZWQgdG86ICVzLlxuIiksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlicmFyeSwgbGlicGF0aCk7CisgICAgICAg IH0KKyAgICB9CisKKyAgaWYgKHRyeV90aHJlYWRfZGJfbG9hZF8xIChoYW5k bGUpKQorICAgIHJldHVybiAxOworCisgIC8qIFRoaXMgbGlicmFyeSAicmVm dXNlZCIgdG8gd29yayBvbiBjdXJyZW50IGluZmVyaW9yLiAgKi8KKyAgZGxj bG9zZSAoaGFuZGxlKTsKKyAgcmV0dXJuIDA7Cit9CisKKworLyogU2VhcmNo IGxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aCBmb3IgbGlidGhyZWFkX2RiIHdo aWNoICJhZ3JlZXMiCisgICB0byB3b3JrIG9uIGN1cnJlbnQgaW5mZXJpb3Iu ICAqLworCitzdGF0aWMgaW50Cit0aHJlYWRfZGJfbG9hZF9zZWFyY2ggKCkK K3sKKyAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgY29uc3QgY2hhciAqc2Vh cmNoX3BhdGggPSBsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGg7CisgIGludCBy YyA9IDA7CisKKyAgd2hpbGUgKCpzZWFyY2hfcGF0aCkKKyAgICB7CisgICAg ICBjb25zdCBjaGFyICplbmQgPSBzdHJjaHIgKHNlYXJjaF9wYXRoLCAnOicp OworICAgICAgaWYgKGVuZCkKKwl7CisJICBzaXplX3QgbGVuID0gZW5kIC0g c2VhcmNoX3BhdGg7CisgICAgICAgICAgaWYgKGxlbiArIDEgKyBzdHJsZW4g KExJQlRIUkVBRF9EQl9TTykgKyAxID4gc2l6ZW9mIChwYXRoKSkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgY2hhciAqY3AgPSB4bWFsbG9jIChs ZW4gKyAxKTsKKyAgICAgICAgICAgICAgbWVtY3B5IChjcCwgc2VhcmNoX3Bh dGgsIGxlbik7CisgICAgICAgICAgICAgIGNwW2xlbl0gPSAnXDAnOworICAg ICAgICAgICAgICB3YXJuaW5nIChfKCJsaWJ0aHJlYWRfZGJfc2VhcmNoX3Bh dGggY29tcG9uZW50IHRvbyBsb25nLCIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAiIGlnbm9yZWQ6ICVzLiIpLCBjcCk7CisgICAgICAgICAgICAgIHhm cmVlIChjcCk7CisgICAgICAgICAgICAgIHNlYXJjaF9wYXRoICs9IGxlbiAr IDE7CisgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor CSAgbWVtY3B5IChwYXRoLCBzZWFyY2hfcGF0aCwgbGVuKTsKKwkgIHBhdGhb bGVuXSA9ICdcMCc7CisJICBzZWFyY2hfcGF0aCArPSBsZW4gKyAxOworCX0K KyAgICAgIGVsc2UKKwl7CisgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxl biAoc2VhcmNoX3BhdGgpOworCisgICAgICAgICAgaWYgKGxlbiArIDEgKyBz dHJsZW4gKExJQlRIUkVBRF9EQl9TTykgKyAxID4gc2l6ZW9mIChwYXRoKSkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgd2FybmluZyAoXygibGli dGhyZWFkX2RiX3NlYXJjaF9wYXRoIGNvbXBvbmVudCB0b28gbG9uZywiCisg ICAgICAgICAgICAgICAgICAgICAgICAgIiBpZ25vcmVkOiAlcy4iKSwgc2Vh cmNoX3BhdGgpOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg IH0KKwkgIG1lbWNweSAocGF0aCwgc2VhcmNoX3BhdGgsIGxlbiArIDEpOwor CSAgc2VhcmNoX3BhdGggKz0gbGVuOworCX0KKyAgICAgIHN0cmNhdCAocGF0 aCwgIi8iKTsKKyAgICAgIHN0cmNhdCAocGF0aCwgTElCVEhSRUFEX0RCX1NP KTsKKyAgICAgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpKQorCXsK KwkgIHJjID0gMTsKKwkgIGJyZWFrOworCX0KKyAgICB9CisgIGlmIChyYyA9 PSAwKQorICAgIHJjID0gdHJ5X3RocmVhZF9kYl9sb2FkIChMSUJUSFJFQURf REJfU08pOworICBpZiAocmMgPT0gMCkKKyAgICB3YXJuaW5nIChfKCJVbmFi bGUgdG8gZmluZCBsaWJ0aHJlYWRfZGIgbWF0Y2hpbmcgaW5mZXJpb3IncyB0 aHJlYWQiCisgICAgICAgICAgICAgICAiIGxpYnJhcnksIHRocmVhZCBkZWJ1 Z2dpbmcgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiIpKTsKKyAgcmV0dXJuIHJj OworfQorCisvKiBBdHRlbXB0IHRvIGxvYWQgYW5kIGluaXRpYWxpemUgbGli dGhyZWFkX2RiLgorICAgUmV0dXJuIDEgb24gc3VjY2Vzcy4KKyAqLworCitz dGF0aWMgaW50Cit0aHJlYWRfZGJfbG9hZCAodm9pZCkKK3sKKyAgY29uc3Qg Y2hhciAqc29uYW1lOworICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07 CisKKyAgaWYgKHRocmVhZF9kYl9oYW5kbGUgIT0gTlVMTCkKKyAgICByZXR1 cm4gMTsKKworICAvKiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aHJlYWRfZGIg b24gdGFyZ2V0cyB3aGljaCBjYW4gbm90IHJ1bgorICAgICAoZXhlY3V0YWJs ZXMgbm90IHJ1bm5pbmcgeWV0LCBjb3JlIGZpbGVzKSBmb3Igbm93LiAgKi8K KyAgaWYgKCF0YXJnZXRfaGFzX2V4ZWN1dGlvbikKKyAgICByZXR1cm4gMDsK KworICAvKiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aHJlYWRfZGIgZm9yIHJl bW90ZSB0YXJnZXRzLiAgKi8KKyAgaWYgKCF0YXJnZXRfY2FuX3J1biAoJmN1 cnJlbnRfdGFyZ2V0KSkKKyAgICByZXR1cm4gMDsKKworICBtc3ltID0gbG9v a3VwX21pbmltYWxfc3ltYm9sICgibnB0bF92ZXJzaW9uIiwgTlVMTCwgTlVM TCk7CisgIGlmICghbXN5bSkKKyAgICBtc3ltID0gbG9va3VwX21pbmltYWxf c3ltYm9sICgiX19saW51eHRocmVhZHNfdmVyc2lvbiIsIE5VTEwsIE5VTEwp OworCisgIC8qIFNvbWUgcmVhbGx5IG9sZCBsaWJwdGhyZWFkIHZlcnNpb25z IGRvIG5vdCBoYXZlIGVpdGhlciBvZiB0aGUgYWJvdmUuICAqLworICBpZiAo IW1zeW0pCisgICAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoIl9f cHRocmVhZF90aHJlYWRzX2V2ZW50cyIsIE5VTEwsIE5VTEwpOworCisgIGlm ICghbXN5bSkKKyAgICAvKiBObyB0aHJlYWRzIHlldCAqLworICAgIHJldHVy biAwOworCisgIHNvbmFtZSA9IHNvbGliX25hbWVfZnJvbV9hZGRyZXNzIChT WU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSkpOworICBpZiAoc29uYW1lKQor ICAgIHsKKyAgICAgIC8qIEF0dGVtcHQgdG8gbG9hZCBsaWJ0aHJlYWRfZGIg ZnJvbSB0aGUgc2FtZSBkaXJlY3RvcnkuICovCisgICAgICBjaGFyIHBhdGhb UEFUSF9NQVhdLCAqY3A7CisgICAgICBzdHJjcHkgKHBhdGgsIHNvbmFtZSk7 CisgICAgICBjcCA9IHN0cnJjaHIgKHBhdGgsICcvJyk7CisgICAgICBpZiAo Y3AgPT0gTlVMTCkKKwl7CisJICAvKiBFeHBlY3RlZCB0byBnZXQgZnVsbHkg cmVzb2x2ZWQgcGF0aG5hbWUgZm9yIGxpYnB0aHJlYWQsCisgICAgICAgICAg ICAgYnV0IGdvdCBzb21ldGhpbmcgZWxzZS4gIFNlYXJjaCBmb3IgbWF0Y2hp bmcgbGlidGhyZWFkX2RiIGFuZAorICAgICAgICAgICAgIGhvcGUgdGhlcmUg aXMgb25lIHRoYXQgbWF0Y2hlcyBjdXJyZW50IGxpYnB0aHJlYWQuICAqLwor CSAgd2FybmluZyAoXygiQ2Fubm90IG9idGFpbiBhYnNvbHV0ZSBwYXRoIG9m IHRocmVhZCBsaWJyYXJ5OiAlcy4iKSwKKyAgICAgICAgICAgICAgICAgICBz b25hbWUpOworCSAgcmV0dXJuIHRocmVhZF9kYl9sb2FkX3NlYXJjaCAoKTsK Kwl9CisgICAgICBzdHJjcHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsK KyAgICAgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpKQorCXJldHVy biAxOworICAgIH0KKyAgcmV0dXJuIHRocmVhZF9kYl9sb2FkX3NlYXJjaCAo KTsKK30KKwogc3RhdGljIHZvaWQKIGRpc2FibGVfdGhyZWFkX2V2ZW50X3Jl cG9ydGluZyAodm9pZCkKIHsKQEAgLTU5Myw3NSArNzk5LDM0IEBAIHZvaWQK IGNoZWNrX2Zvcl90aHJlYWRfZGIgKHZvaWQpCiB7CiAgIHRkX2Vycl9lIGVy cjsKLSAgc3RhdGljIGludCBhbHJlYWR5X2xvYWRlZDsKKyAgc3RhdGljIHZv aWQgKmxhc3RfbG9hZGVkOwogCiAgIC8qIERvIG5vdGhpbmcgaWYgd2UgY291 bGRuJ3QgbG9hZCBsaWJ0aHJlYWRfZGIuc28uMS4gICovCi0gIGlmICh0ZF90 YV9uZXdfcCA9PSBOVUxMKQorICBpZiAoIXRocmVhZF9kYl9sb2FkICgpKQog ICAgIHJldHVybjsKIAogICAvKiBGaXJzdCB0aW1lIHRocm91Z2gsIHJlcG9y dCB0aGF0IGxpYnRocmVhZF9kYiB3YXMgc3VjY2Vzc2Z1bHkKICAgICAgbG9h ZGVkLiAgQ2FuJ3QgcHJpbnQgdGhpcyBpbiBpbiB0aHJlYWRfZGJfbG9hZCBh cywgYXQgdGhhdCBzdGFnZSwKLSAgICAgdGhlIGludGVycHJldGVyIGFuZCBp dCdzIGNvbnNvbGUgaGF2ZW4ndCBzdGFydGVkLiAgKi8KKyAgICAgdGhlIGlu dGVycHJldGVyIGFuZCBpdCdzIGNvbnNvbGUgaGF2ZW4ndCBzdGFydGVkLgor ICAgICBXZSB0cmFjayB0ZF90YV9uZXdfcCBiZWNhdXNlIHRoZSB1c2VyIG1h eSBzd2l0Y2ggZXhlY3V0YWJsZXMsCisgICAgIGFuZCBhcyBhIHJlc3VsdCB3 ZSBtYXkgZGVjaWRlIHRvIHVzZSBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mCisg ICAgIGxpYnRocmVhZF9kYi4gKi8KIAotICBpZiAoIWFscmVhZHlfbG9hZGVk KQorICBpZiAobGFzdF9sb2FkZWQgIT0gdGRfdGFfbmV3X3ApCiAgICAgewot ICAgICAgRGxfaW5mbyBpbmZvOwotICAgICAgY29uc3QgY2hhciAqbGlicmFy eSA9IE5VTEw7Ci0gICAgICBpZiAoZGxhZGRyICgoKnRkX3RhX25ld19wKSwg JmluZm8pICE9IDApCi0JbGlicmFyeSA9IGluZm8uZGxpX2ZuYW1lOworICAg ICAgbGFzdF9sb2FkZWQgPSB0ZF90YV9uZXdfcDsKIAotICAgICAgLyogVHJ5 IGRsaW5mbz8gICovCi0KLSAgICAgIGlmIChsaWJyYXJ5ID09IE5VTEwpCi0J LyogUGFyYW5vaWQgLSBkb24ndCBsZXQgYSBOVUxMIHBhdGggc2xpcCB0aHJv dWdoLiAgKi8KLQlsaWJyYXJ5ID0gTElCVEhSRUFEX0RCX1NPOwotCi0gICAg ICBpZiAoaW5mb192ZXJib3NlKQotCXByaW50Zl91bmZpbHRlcmVkIChfKCJV c2luZyBob3N0IGxpYnRocmVhZF9kYiBsaWJyYXJ5IFwiJXNcIi5cbiIpLAot CQkJICAgbGlicmFyeSk7Ci0gICAgICBhbHJlYWR5X2xvYWRlZCA9IDE7Ci0g ICAgfQotCi0gIGlmICh1c2luZ190aHJlYWRfZGIpCi0gICAgLyogTm90aGlu ZyB0byBkby4gIFRoZSB0aHJlYWQgbGlicmFyeSB3YXMgYWxyZWFkeSBkZXRl Y3RlZCBhbmQgdGhlCi0gICAgICAgdGFyZ2V0IHZlY3RvciB3YXMgYWxyZWFk eSBhY3RpdmF0ZWQuICAqLwotICAgIHJldHVybjsKLQotICAvKiBEb24ndCBh dHRlbXB0IHRvIHVzZSB0aHJlYWRfZGIgb24gdGFyZ2V0cyB3aGljaCBjYW4g bm90IHJ1bgotICAgICAoZXhlY3V0YWJsZXMgbm90IHJ1bm5pbmcgeWV0LCBj b3JlIGZpbGVzKSBmb3Igbm93LiAgKi8KLSAgaWYgKCF0YXJnZXRfaGFzX2V4 ZWN1dGlvbikKLSAgICByZXR1cm47Ci0KLSAgLyogRG9uJ3QgYXR0ZW1wdCB0 byB1c2UgdGhyZWFkX2RiIGZvciByZW1vdGUgdGFyZ2V0cy4gICovCi0gIGlm ICghdGFyZ2V0X2Nhbl9ydW4gKCZjdXJyZW50X3RhcmdldCkpCi0gICAgcmV0 dXJuOwotCi0gIC8qIEluaXRpYWxpemUgdGhlIHN0cnVjdHVyZSB0aGF0IGlk ZW50aWZpZXMgdGhlIGNoaWxkIHByb2Nlc3MuICAqLwotICBwcm9jX2hhbmRs ZS5wdGlkID0gaW5mZXJpb3JfcHRpZDsKLQotICAvKiBOb3cgYXR0ZW1wdCB0 byBvcGVuIGEgY29ubmVjdGlvbiB0byB0aGUgdGhyZWFkIGxpYnJhcnkuICAq LwotICBlcnIgPSB0ZF90YV9uZXdfcCAoJnByb2NfaGFuZGxlLCAmdGhyZWFk X2FnZW50KTsKLSAgc3dpdGNoIChlcnIpCi0gICAgewotICAgIGNhc2UgVERf Tk9MSUJUSFJFQUQ6Ci0gICAgICAvKiBObyB0aHJlYWQgbGlicmFyeSB3YXMg ZGV0ZWN0ZWQuICAqLwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFREX09L OgotICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIltUaHJlYWQgZGVidWdn aW5nIHVzaW5nIGxpYnRocmVhZF9kYiBlbmFibGVkXVxuIikpOwotCi0gICAg ICAvKiBUaGUgdGhyZWFkIGxpYnJhcnkgd2FzIGRldGVjdGVkLiAgQWN0aXZh dGUgdGhlIHRocmVhZF9kYiB0YXJnZXQuICAqLwotICAgICAgcHVzaF90YXJn ZXQgKCZ0aHJlYWRfZGJfb3BzKTsKLSAgICAgIHVzaW5nX3RocmVhZF9kYiA9 IDE7Ci0KLSAgICAgIGVuYWJsZV90aHJlYWRfZXZlbnRfcmVwb3J0aW5nICgp OwotICAgICAgdGhyZWFkX2RiX2ZpbmRfbmV3X3RocmVhZHNfMSAoKTsKLSAg ICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIHdhcm5pbmcgKF8o IkNhbm5vdCBpbml0aWFsaXplIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeTog JXMiKSwKLQkgICAgICAgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwotICAg ICAgYnJlYWs7CisgICAgICBpZiAoaW5mb192ZXJib3NlIHx8ICpsaWJ0aHJl YWRfZGJfc2VhcmNoX3BhdGgpCisgICAgICAgIHsKKyAgICAgICAgICBjb25z dCBjaGFyICpsaWJyYXJ5OworCisgICAgICAgICAgbGlicmFyeSA9IGRsYWRk cl90b19zb25hbWUgKCp0ZF90YV9uZXdfcCk7CisgICAgICAgICAgaWYgKGxp YnJhcnkgPT0gTlVMTCkKKyAgICAgICAgICAgIGxpYnJhcnkgPSBMSUJUSFJF QURfREJfU087CisKKyAgICAgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygi VXNpbmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGlicmFyeSBcIiVzXCIuXG4iKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSk7CisgICAg ICAgIH0KICAgICB9CiB9CiAKQEAgLTc4Myw3ICs5NDgsOSBAQCB0aHJlYWRf ZGJfZGV0YWNoIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCiAKICAgLyogRGV0 YWNoIHRocmVhZF9kYiB0YXJnZXQgb3BzLiAgKi8KICAgdW5wdXNoX3Rhcmdl dCAoJnRocmVhZF9kYl9vcHMpOwotICB1c2luZ190aHJlYWRfZGIgPSAwOwor ICBpZiAodGhyZWFkX2RiX2hhbmRsZSkKKyAgICBkbGNsb3NlICh0aHJlYWRf ZGJfaGFuZGxlKTsKKyAgdGhyZWFkX2RiX2hhbmRsZSA9IE5VTEw7CiAKICAg dGFyZ2V0X2JlbmVhdGgtPnRvX2RldGFjaCAodGFyZ2V0X2JlbmVhdGgsIGFy Z3MsIGZyb21fdHR5KTsKIH0KQEAgLTg5Niw3ICsxMDYzLDkgQEAgdGhyZWFk X2RiX3dhaXQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCiAgICAgewogICAg ICAgcmVtb3ZlX3RocmVhZF9ldmVudF9icmVha3BvaW50cyAoKTsKICAgICAg IHVucHVzaF90YXJnZXQgKCZ0aHJlYWRfZGJfb3BzKTsKLSAgICAgIHVzaW5n X3RocmVhZF9kYiA9IDA7CisgICAgICBpZiAodGhyZWFkX2RiX2hhbmRsZSkK KwlkbGNsb3NlICh0aHJlYWRfZGJfaGFuZGxlKTsKKyAgICAgIHRocmVhZF9k Yl9oYW5kbGUgPSBOVUxMOwogCiAgICAgICByZXR1cm4gcHRpZDsKICAgICB9 CkBAIC05NDQsNyArMTExMyw5IEBAIHRocmVhZF9kYl9tb3Vybl9pbmZlcmlv ciAoc3RydWN0IHRhcmdldF8KIAogICAvKiBEZXRhY2ggdGhyZWFkX2RiIHRh cmdldCBvcHMuICAqLwogICB1bnB1c2hfdGFyZ2V0IChvcHMpOwotICB1c2lu Z190aHJlYWRfZGIgPSAwOworICBpZiAodGhyZWFkX2RiX2hhbmRsZSkKKyAg ICBkbGNsb3NlICh0aHJlYWRfZGJfaGFuZGxlKTsKKyAgdGhyZWFkX2RiX2hh bmRsZSA9IE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTExODcsMTMgKzEz NTgsMjggQEAgZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlh bGl6ZQogdm9pZAogX2luaXRpYWxpemVfdGhyZWFkX2RiICh2b2lkKQogewot ICAvKiBPbmx5IGluaXRpYWxpemUgdGhlIG1vZHVsZSBpZiB3ZSBjYW4gbG9h ZCBsaWJ0aHJlYWRfZGIuICAqLwotICBpZiAodGhyZWFkX2RiX2xvYWQgKCkp Ci0gICAgewotICAgICAgaW5pdF90aHJlYWRfZGJfb3BzICgpOwotICAgICAg YWRkX3RhcmdldCAoJnRocmVhZF9kYl9vcHMpOworICBpbml0X3RocmVhZF9k Yl9vcHMgKCk7CisgIGFkZF90YXJnZXQgKCZ0aHJlYWRfZGJfb3BzKTsKIAot ICAgICAgLyogQWRkIG91cnNlbHZlcyB0byBvYmpmaWxlIGV2ZW50IGNoYWlu LiAgKi8KLSAgICAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhy ZWFkX2RiX25ld19vYmpmaWxlKTsKLSAgICB9CisgIC8qIERlZmVyIGxvYWRp bmcgb2YgbGlidGhyZWFkX2RiLnNvIHVudGlsIGluZmVyaW9yIGlzIHJ1bm5p bmcuCisgICAgIFRoaXMgYWxsb3dzIGdkYiB0byBsb2FkIGNvcnJlY3QgbGli dGhyZWFkX2RiIGZvciBhIGdpdmVuCisgICAgIGV4ZWN1dGFibGUgLS0gdGhl cmUgY291bGQgYmUgbXV0aXBsZSB2ZXJzaW9ucyBvZiBnbGliYywKKyAgICAg Y29tcGlsZWQgd2l0aCBMaW51eFRocmVhZHMgb3IgTlBUTCwgYW5kIHVudGls IHRoZXJlIGlzCisgICAgIGEgcnVubmluZyBpbmZlcmlvciwgd2UgY2FuJ3Qg dGVsbCB3aGljaCBsaWJ0aHJlYWRfZGIgaXMKKyAgICAgdGhlIGNvcnJlY3Qg b25lIHRvIGxvYWQuICovCisKKyAgbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRo ID0geHN0cmR1cCAoTElCVEhSRUFEX0RCX1NFQVJDSF9QQVRIKTsKKworICBh ZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJsaWJ0aHJlYWQt ZGItc2VhcmNoLXBhdGgiLAorCQkJCSAgICAgY2xhc3Nfc3VwcG9ydCwKKwkJ CQkgICAgICZsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGgsIF8oIlwKK1NldCBz ZWFyY2ggcGF0aCBmb3IgbGlidGhyZWFkX2RiLiIpLCBfKCJcCitTaG93IHRo ZSBjdXJyZW50IHNlYXJjaCBwYXRoIG9yIGxpYnRocmVhZF9kYi4iKSwgXygi XAorVGhpcyBwYXRoIGlzIHVzZWQgdG8gc2VhcmNoIGZvciBsaWJ0aHJlYWRf ZGIgdG8gYmUgbG9hZGVkIGludG8gXAorZ2RiIGl0c2VsZi4iKSwKKwkJCSAg ICBOVUxMLAorCQkJICAgIE5VTEwsCisJCQkgICAgJnNldGxpc3QsICZzaG93 bGlzdCk7CisgIC8qIEFkZCBvdXJzZWx2ZXMgdG8gb2JqZmlsZSBldmVudCBj aGFpbi4gICovCisgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhy ZWFkX2RiX25ld19vYmpmaWxlKTsKIH0KSW5kZXg6IGRvYy9nZGIudGV4aW5m bwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvZ2RiL2RvYy9nZGIudGV4aW5mbyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS41ODAKZGlmZiAtdSAtcCAtdSAtcjEuNTgwIGdkYi50ZXhpbmZvCi0tLSBk b2MvZ2RiLnRleGluZm8JMTUgQXByIDIwMDkgMjI6MjA6MzIgLTAwMDAJMS41 ODAKKysrIGRvYy9nZGIudGV4aW5mbwkyMCBBcHIgMjAwOSAxNjo0MTo1NiAt MDAwMApAQCAtMjQyOSw2ICsyNDI5LDkgQEAgYSBjb21tYW5kIHRvIGFwcGx5 IGEgY29tbWFuZCB0byBhIGxpc3QgbwogQGl0ZW0gdGhyZWFkLXNwZWNpZmlj IGJyZWFrcG9pbnRzCiBAaXRlbSBAc2FtcHtzZXQgcHJpbnQgdGhyZWFkLWV2 ZW50c30sIHdoaWNoIGNvbnRyb2xzIHByaW50aW5nIG9mIAogbWVzc2FnZXMg b24gdGhyZWFkIHN0YXJ0IGFuZCBleGl0LgorQGl0ZW0gQHNhbXB7c2V0IGxp YnRocmVhZC1kYi1zZWFyY2gtcGF0aCBAdmFye3BhdGh9fSwgd2hpY2ggbGV0 cwordGhlIHVzZXIgc3BlY2lmeSB3aGljaCBAY29kZXtsaWJ0aHJlYWRfZGJ9 IHRvIHVzZSBpZiB0aGUgZGVmYXVsdCBjaG9pY2UKK2lzbid0IGNvbXBhdGli bGUgd2l0aCB0aGUgcHJvZ3JhbS4KIEBlbmQgaXRlbWl6ZQogCiBAcXVvdGF0 aW9uCkBAIC0yNjQ3LDYgKzI2NTAsNDAgQEAgcHJvZ3JhbXMgd2l0aCBtdWx0 aXBsZSB0aHJlYWRzLgogQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5n IFdhdGNocG9pbnRzfSwgZm9yIGluZm9ybWF0aW9uIGFib3V0CiB3YXRjaHBv aW50cyBpbiBwcm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCiAKK0B0 YWJsZSBAY29kZQorQGtpbmRleCBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1w YXRoCitAY2luZGV4IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRf ZGJ9CitAaXRlbSBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoIEBye1t9 QHZhcntwYXRofUBye119CitJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCwgQHZh cntwYXRofSBpcyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mCitkaXJlY3Rv cmllcyBAdmFsdWV7R0RCTn0gd2lsbCB1c2UgdG8gc2VhcmNoIGZvciBAY29k ZXtsaWJ0aHJlYWRfZGJ9LgorSWYgeW91IG9taXQgQHZhcntwYXRofSwgQHNh bXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofSB3aWxsIGJlIHJlc2V0IHRv CithbiBlbXB0eSBsaXN0LgorCitPbiBAc2N7Z251fS9MaW51eCBhbmQgU29s YXJpcyBzeXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycK K0Bjb2Rle2xpYnRocmVhZF9kYn0gbGlicmFyeSB0byBvYnRhaW4gaW5mb3Jt YXRpb24gYWJvdXQgdGhyZWFkcyBpbiB0aGUKK2luZmVyaW9yIHByb2Nlc3Mu ICBAdmFsdWV7R0RCTn0gZmlyc3QgYXR0ZW1wdHMgdG8gdXNlCitAY29kZXts aWJ0aHJlYWRfZGJ9IGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeSBmcm9tIHdo aWNoCitAY29kZXtsaWJwdGhyZWFkfSB3YXMgbG9hZGVkIGluIHRoZSBpbmZl cmlvciBwcm9jZXNzLiAgSWYgdGhhdCBmYWlscywKK0B2YWx1ZXtHREJOfSB3 aWxsIHVzZSBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9LAorYW5k IHRoZW4gZGVmYXVsdCBzeXN0ZW0gc2hhcmVkIGxpYnJhcnkgZGlyZWN0b3Jp ZXMsIHRvIGZpbmQKK0Bjb2Rle2xpYnRocmVhZF9kYn0uCisKK0ZvciBhbnkg QGNvZGV7bGlidGhyZWFkX2RifSBsaWJyYXJ5IEB2YWx1ZXtHREJOfSBmaW5k cyBpbiBhYm92ZSBkaXJlY3RvcmllcywKK0B2YWx1ZXtHREJOfSBhdHRlbXB0 cyB0byBpbml0aWFsaXplIGl0IHdpdGggdGhlIGN1cnJlbnQgaW5mZXJpb3Ig cHJvY2Vzcy4KK0lmIHRoaXMgaW5pdGlhbGl6YXRpb24gZmFpbHMgKHdoaWNo IGNvdWxkIGhhcHBlbiBiZWNhdXNlIG9mIGEgdmVyc2lvbgorbWlzbWF0Y2gg YmV0d2VlbiBAY29kZXtsaWJ0aHJlYWRfZGJ9IGFuZCBAY29kZXtsaWJwdGhy ZWFkfSksIEB2YWx1ZXtHREJOfQord2lsbCB1bmxvYWQgQGNvZGV7bGlidGhy ZWFkX2RifSwgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgZGlyZWN0b3J5 LgorSWYgbm9uZSBvZiBAY29kZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcmllcyBp bml0aWFsaXplIHN1Y2Nlc3NmdWxseSwKK0B2YWx1ZXtHREJOfSB3aWxsIGlz c3VlIGEgd2FybmluZyBhbmQgdGhyZWFkIGRlYnVnZ2luZyB3aWxsIGJlIGRp c2FibGVkLgorCitTZXR0aW5nIEBjb2Rle2xpYnRocmVhZC1kYi1zZWFyY2gt cGF0aH0gaXMgY3VycmVudGx5IGltcGxlbWVudGVkCitvbmx5IG9uIHNvbWUg cGxhdGZvcm1zLgorCitAa2luZGV4IHNob3cgbGlidGhyZWFkLWRiLXNlYXJj aC1wYXRoIAorQGl0ZW0gc2hvdyBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgg CitEaXNwbGF5IGN1cnJlbnQgbGlidGhyZWFkX2RiIHNlYXJjaCBwYXRoLgor QGVuZCB0YWJsZQorCiBAbm9kZSBQcm9jZXNzZXMKIEBzZWN0aW9uIERlYnVn Z2luZyBQcm9ncmFtcyB3aXRoIE11bHRpcGxlIFByb2Nlc3NlcwogCg== --00163646d53e4305630467ff49f3--