From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9376 invoked by alias); 20 Apr 2009 17:37:34 -0000 Received: (qmail 9363 invoked by uid 22791); 20 Apr 2009 17:37:31 -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 17:37:25 +0000 Received: from wpaz37.hot.corp.google.com (wpaz37.hot.corp.google.com [172.24.198.101]) by smtp-out.google.com with ESMTP id n3KHbKmU011100 for ; Mon, 20 Apr 2009 18:37:21 +0100 Received: from qyk41 (qyk41.prod.google.com [10.241.83.169]) by wpaz37.hot.corp.google.com with ESMTP id n3KHavBr031211 for ; Mon, 20 Apr 2009 10:37:19 -0700 Received: by qyk41 with SMTP id 41so1365352qyk.25 for ; Mon, 20 Apr 2009 10:37:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.110.21 with SMTP id l21mr577617qcp.26.1240249029067; Mon, 20 Apr 2009 10:37:09 -0700 (PDT) In-Reply-To: <8ac60eac0904200947y2acca97arc1a0fc61530357a0@mail.gmail.com> References: <20090406203920.CCD6F19C4EC@localhost> <1239225742.8871.145.camel@localhost.localdomain> <8ac60eac0904101205h76d8377cv843db8177e74f8af@mail.gmail.com> <8ac60eac0904171213p4c075224x5f5c3661d240f383@mail.gmail.com> <20090420131751.GA25075@caradoc.them.org> <8ac60eac0904200947y2acca97arc1a0fc61530357a0@mail.gmail.com> Date: Mon, 20 Apr 2009 17:37:00 -0000 Message-ID: <8ac60eac0904201037q2db9c1e6i13467074185e0289@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=0016361e8252d13faf0467fffa9d 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/msg00522.txt.bz2 --0016361e8252d13faf0467fffa9d Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 1152 On Mon, Apr 20, 2009 at 9:47 AM, Paul Pluzhnikov wrote: > Attached is a revised patch that fixes all the comments so far. Sorry, missed the NEWS update. Thanks, -- Paul Pluzhnikov 2009-04-20 Paul Pluzhnikov * NEWS: Mention set/show libthread-db-search-path. * 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. --0016361e8252d13faf0467fffa9d Content-Type: text/plain; charset=US-ASCII; name="gdb-thread-db.20090420-1.txt" Content-Disposition: attachment; filename="gdb-thread-db.20090420-1.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftrg7o5j1 Content-length: 27804 SW5kZXg6IE5FV1MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9ORVdTLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjMwNwpkaWZmIC11IC1wIC11IC1yMS4zMDcgTkVXUwotLS0gTkVXUwkxOSBB cHIgMjAwOSAyMDowNToyMyAtMDAwMAkxLjMwNworKysgTkVXUwkyMCBBcHIg MjAwOSAxNzozNTo0MCAtMDAwMApAQCAtMjg0LDYgKzI4NCwxMSBAQCBzaG93 IHRjcCBjb25uZWN0LXRpbWVvdXQKICAgd2l0aCBhIHNwZWNpZmllZCB0aW1l b3V0IHBlcmlvZDsgdGhpcyBpcyB1c2VmdWwgaWYgdGhlIHN0dWIgaXMgbGF1 bmNoZWQKICAgaW4gcGFyYWxsZWwgd2l0aCBHREIgYnV0IG1heSBub3QgYmUg cmVhZHkgdG8gYWNjZXB0IGNvbm5lY3Rpb25zIGltbWVkaWF0ZWx5LgogCitz ZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoCitzaG93IGxpYnRocmVhZC1k Yi1zZWFyY2gtcGF0aAorICBDb250cm9sIGxpc3Qgb2YgZGlyZWN0b3JpZXMg d2hpY2ggR0RCIHdpbGwgc2VhcmNoIGZvciBhcHByb3ByaWF0ZQorICBsaWJ0 aHJlYWRfZGIuCisKICogTmV3IG5hdGl2ZSBjb25maWd1cmF0aW9ucwogCiB4 ODYveDg2XzY0IERhcndpbgkJaVszNDU2N104Ni0qLWRhcndpbioKSW5kZXg6 IGdkYl90aHJlYWRfZGIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2dkYl90aHJlYWRfZGIuaCx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xMgpkaWZmIC11IC1wIC11IC1yMS4xMiBnZGJf dGhyZWFkX2RiLmgKLS0tIGdkYl90aHJlYWRfZGIuaAkxOCBNYXIgMjAwOSAw ODo1MToxMSAtMDAwMAkxLjEyCisrKyBnZGJfdGhyZWFkX2RiLmgJMjAgQXBy IDIwMDkgMTc6MzU6NDAgLTAwMDAKQEAgLTEsNSArMSwxNCBAQAogI2lmZGVm IEhBVkVfVEhSRUFEX0RCX0gKICNpbmNsdWRlIDx0aHJlYWRfZGIuaD4KKwor I2lmbmRlZiBMSUJUSFJFQURfREJfU08KKyNkZWZpbmUgTElCVEhSRUFEX0RC X1NPICJsaWJ0aHJlYWRfZGIuc28uMSIKKyNlbmRpZgorCisjaWZuZGVmIExJ QlRIUkVBRF9EQl9TRUFSQ0hfUEFUSAorI2RlZmluZSBMSUJUSFJFQURfREJf U0VBUkNIX1BBVEggIiIKKyNlbmRpZgorCiAjZWxzZQogCiAvKiBDb3B5cmln aHQgKEMpIDE5OTksIDIwMDAsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkluZGV4OiBsaW51eC10aHJlYWQtZGIu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvZ2RiL2xpbnV4LXRocmVhZC1kYi5jLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjU0CmRpZmYgLXUgLXAgLXUgLXIxLjU0IGxpbnV4LXRocmVhZC1kYi5j Ci0tLSBsaW51eC10aHJlYWQtZGIuYwkyNyBGZWIgMjAwOSAyMDozNDo0MSAt MDAwMAkxLjU0CisrKyBsaW51eC10aHJlYWQtZGIuYwkyMCBBcHIgMjAwOSAx NzozNTo0MCAtMDAwMApAQCAtMjYsMTMgKzI2LDE2IEBACiAjaW5jbHVkZSAi Z2RiX3RocmVhZF9kYi5oIgogCiAjaW5jbHVkZSAiYmZkLmgiCisjaW5jbHVk ZSAiY29tbWFuZC5oIgogI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyNpbmNs dWRlICJnZGJjbWQuaCIKICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKICNpbmNs dWRlICJpbmZlcmlvci5oIgogI2luY2x1ZGUgInN5bWZpbGUuaCIKICNpbmNs dWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1 ZGUgInJlZ2NhY2hlLmgiCisjaW5jbHVkZSAic29saWIuaCIKICNpbmNsdWRl ICJzb2xpYi1zdnI0LmgiCiAjaW5jbHVkZSAiZ2RiY29yZS5oIgogI2luY2x1 ZGUgIm9ic2VydmVyLmgiCkBAIC00NCwxMCArNDcsNiBAQAogI2luY2x1ZGUg PGdudS9saWJjLXZlcnNpb24uaD4KICNlbmRpZgogCi0jaWZuZGVmIExJQlRI UkVBRF9EQl9TTwotI2RlZmluZSBMSUJUSFJFQURfREJfU08gImxpYnRocmVh ZF9kYi5zby4xIgotI2VuZGlmCi0KIC8qIEdOVS9MaW51eCBsaWJ0aHJlYWRf ZGIgc3VwcG9ydC4KIAogICAgbGlidGhyZWFkX2RiIGlzIGEgbGlicmFyeSwg cHJvdmlkZWQgYWxvbmcgd2l0aCBsaWJwdGhyZWFkLnNvLCB3aGljaApAQCAt NzQsMTQgKzczLDE3IEBACiAgICBvZiB0aGUgcHRpZF90IHByZXZlbnRzIHRo cmVhZCBJRHMgY2hhbmdpbmcgd2hlbiBsaWJwdGhyZWFkIGlzCiAgICBsb2Fk ZWQgb3IgdW5sb2FkZWQuICAqLwogCitzdGF0aWMgY2hhciAqbGlidGhyZWFk X2RiX3NlYXJjaF9wYXRoOworCiAvKiBJZiB3ZSdyZSBydW5uaW5nIG9uIEdO VS9MaW51eCwgd2UgbXVzdCBleHBsaWNpdGx5IGF0dGFjaCB0byBhbnkgbmV3 CiAgICB0aHJlYWRzLiAgKi8KIAogLyogVGhpcyBtb2R1bGUncyB0YXJnZXQg dmVjdG9yLiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyB0aHJlYWRf ZGJfb3BzOwogCi0vKiBOb24temVybyBpZiB3ZSdyZSB1c2luZyB0aGlzIG1v ZHVsZSdzIHRhcmdldCB2ZWN0b3IuICAqLwotc3RhdGljIGludCB1c2luZ190 aHJlYWRfZGI7CisvKiBIYW5kbGUgZnJvbSBkbG9wZW4gZm9yIGxpYnRocmVh ZF9kYi5zby4gIE5vdCBOVUxMIGlmIHdlJ3JlIHVzaW5nIHRoaXMKKyAgIG1v ZHVsZSdzIHRhcmdldCB2ZWN0b3IuICAqLworc3RhdGljIHZvaWQgKnRocmVh ZF9kYl9oYW5kbGU7CiAKIC8qIE5vbi16ZXJvIGlmIHdlIGhhdmUgZGV0ZXJt aW5lZCB0aGUgc2lnbmFscyB1c2VkIGJ5IHRoZSB0aHJlYWRzCiAgICBsaWJy YXJ5LiAgKi8KQEAgLTM0NCw3ICszNDYsNyBAQCB0aHJlYWRfZGJfYXR0YWNo X2x3cCAocHRpZF90IHB0aWQpCiAgIHRkX3RocmluZm9fdCB0aTsKICAgdGRf ZXJyX2UgZXJyOwogCi0gIGlmICghdXNpbmdfdGhyZWFkX2RiKQorICBpZiAo dGhyZWFkX2RiX2hhbmRsZSA9PSBOVUxMKQogICAgIHJldHVybiAwOwogCiAg IC8qIFRoaXMgcHRpZCBjb21lcyBmcm9tIGxpbnV4LW5hdC5jLCB3aGljaCBz aG91bGQgYWx3YXlzIGZpbGwgaW4gdGhlCkBAIC0zODUsNzEgKzM4Nyw2IEBA IHZlcmJvc2VfZGxzeW0gKHZvaWQgKmhhbmRsZSwgY29uc3QgY2hhciAKICAg cmV0dXJuIHN5bTsKIH0KIAotc3RhdGljIGludAotdGhyZWFkX2RiX2xvYWQg KHZvaWQpCi17Ci0gIHZvaWQgKmhhbmRsZTsKLSAgdGRfZXJyX2UgZXJyOwot Ci0gIGhhbmRsZSA9IGRsb3BlbiAoTElCVEhSRUFEX0RCX1NPLCBSVExEX05P Vyk7Ci0gIGlmIChoYW5kbGUgPT0gTlVMTCkKLSAgICB7Ci0gICAgICBmcHJp bnRmX2ZpbHRlcmVkIChnZGJfc3RkZXJyLCAiXG5cbmRsb3BlbiBmYWlsZWQg b24gJyVzJyAtICVzXG4iLAotCQkJTElCVEhSRUFEX0RCX1NPLCBkbGVycm9y ICgpKTsKLSAgICAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRlcnIsCi0J CQkiR0RCIHdpbGwgbm90IGJlIGFibGUgdG8gZGVidWcgcHRocmVhZHMuXG5c biIpOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gIC8qIEluaXRpYWxp emUgcG9pbnRlcnMgdG8gdGhlIGR5bmFtaWMgbGlicmFyeSBmdW5jdGlvbnMg d2Ugd2lsbCB1c2UuCi0gICAgIEVzc2VudGlhbCBmdW5jdGlvbnMgZmlyc3Qu ICAqLwotCi0gIHRkX2luaXRfcCA9IHZlcmJvc2VfZGxzeW0gKGhhbmRsZSwg InRkX2luaXQiKTsKLSAgaWYgKHRkX2luaXRfcCA9PSBOVUxMKQotICAgIHJl dHVybiAwOwotCi0gIHRkX3RhX25ld19wID0gdmVyYm9zZV9kbHN5bSAoaGFu ZGxlLCAidGRfdGFfbmV3Iik7Ci0gIGlmICh0ZF90YV9uZXdfcCA9PSBOVUxM KQotICAgIHJldHVybiAwOwotCi0gIHRkX3RhX21hcF9pZDJ0aHJfcCA9IHZl cmJvc2VfZGxzeW0gKGhhbmRsZSwgInRkX3RhX21hcF9pZDJ0aHIiKTsKLSAg aWYgKHRkX3RhX21hcF9pZDJ0aHJfcCA9PSBOVUxMKQotICAgIHJldHVybiAw OwotCi0gIHRkX3RhX21hcF9sd3AydGhyX3AgPSB2ZXJib3NlX2Rsc3ltICho YW5kbGUsICJ0ZF90YV9tYXBfbHdwMnRociIpOwotICBpZiAodGRfdGFfbWFw X2x3cDJ0aHJfcCA9PSBOVUxMKQotICAgIHJldHVybiAwOwotCi0gIHRkX3Rh X3Rocl9pdGVyX3AgPSB2ZXJib3NlX2Rsc3ltIChoYW5kbGUsICJ0ZF90YV90 aHJfaXRlciIpOwotICBpZiAodGRfdGFfdGhyX2l0ZXJfcCA9PSBOVUxMKQot ICAgIHJldHVybiAwOwotCi0gIHRkX3Rocl92YWxpZGF0ZV9wID0gdmVyYm9z ZV9kbHN5bSAoaGFuZGxlLCAidGRfdGhyX3ZhbGlkYXRlIik7Ci0gIGlmICh0 ZF90aHJfdmFsaWRhdGVfcCA9PSBOVUxMKQotICAgIHJldHVybiAwOwotCi0g IHRkX3Rocl9nZXRfaW5mb19wID0gdmVyYm9zZV9kbHN5bSAoaGFuZGxlLCAi dGRfdGhyX2dldF9pbmZvIik7Ci0gIGlmICh0ZF90aHJfZ2V0X2luZm9fcCA9 PSBOVUxMKQotICAgIHJldHVybiAwOwotCi0gIC8qIEluaXRpYWxpemUgdGhl IGxpYnJhcnkuICAqLwotICBlcnIgPSB0ZF9pbml0X3AgKCk7Ci0gIGlmIChl cnIgIT0gVERfT0spCi0gICAgewotICAgICAgd2FybmluZyAoXygiQ2Fubm90 IGluaXRpYWxpemUgbGlidGhyZWFkX2RiOiAlcyIpLCB0aHJlYWRfZGJfZXJy X3N0ciAoZXJyKSk7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgLyog VGhlc2UgYXJlIG5vdCBlc3NlbnRpYWwuICAqLwotICB0ZF90YV9ldmVudF9h ZGRyX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGFfZXZlbnRfYWRkciIpOwot ICB0ZF90YV9zZXRfZXZlbnRfcCA9IGRsc3ltIChoYW5kbGUsICJ0ZF90YV9z ZXRfZXZlbnQiKTsKLSAgdGRfdGFfZXZlbnRfZ2V0bXNnX3AgPSBkbHN5bSAo aGFuZGxlLCAidGRfdGFfZXZlbnRfZ2V0bXNnIik7Ci0gIHRkX3Rocl9ldmVu dF9lbmFibGVfcCA9IGRsc3ltIChoYW5kbGUsICJ0ZF90aHJfZXZlbnRfZW5h YmxlIik7Ci0gIHRkX3Rocl90bHNfZ2V0X2FkZHJfcCA9IGRsc3ltIChoYW5k bGUsICJ0ZF90aHJfdGxzX2dldF9hZGRyIik7Ci0KLSAgcmV0dXJuIDE7Ci19 Ci0KIHN0YXRpYyB0ZF9lcnJfZQogZW5hYmxlX3RocmVhZF9ldmVudCAodGRf dGhyYWdlbnRfdCAqdGhyZWFkX2FnZW50LCBpbnQgZXZlbnQsIENPUkVfQURE UiAqYnApCiB7CkBAIC01NDEsNiArNDc4LDI3NSBAQCBlbmFibGVfdGhyZWFk X2V2ZW50X3JlcG9ydGluZyAodm9pZCkKICAgICB9CiB9CiAKKy8qIEF0dGVt cHQgdG8gaW5pdGlhbGl6ZSBkbG9wZW4oKWVkIGxpYnRocmVhZF9kYiwgZGVz Y3JpYmVkIGJ5IEhBTkRMRS4KKyAgIFJldHVybiAxIG9uIHN1Y2Nlc3MuCisg ICBGYWlsdXJlIGNvdWxkIGhhcHBlbiBpZiBsaWJ0aHJlYWRfZGIgZG9lcyBu b3QgaGF2ZSBzeW1ib2xzIHdlIGV4cGVjdCwKKyAgIG9yIHdoZW4gaXQgcmVm dXNlcyB0byB3b3JrIHdpdGggdGhlIGN1cnJlbnQgaW5mZXJpb3IgKGUuZy4g ZHVlIHRvCisgICB2ZXJzaW9uIG1pc21hdGNoIGJldHdlZW4gbGlidGhyZWFk X2RiIGFuZCBsaWJwdGhyZWFkKS4gICovCisKK3N0YXRpYyBpbnQKK3RyeV90 aHJlYWRfZGJfbG9hZF8xICh2b2lkICpoYW5kbGUpCit7CisgIHRkX2Vycl9l IGVycjsKKworICAvKiBJbml0aWFsaXplIHBvaW50ZXJzIHRvIHRoZSBkeW5h bWljIGxpYnJhcnkgZnVuY3Rpb25zIHdlIHdpbGwgdXNlLgorICAgICBFc3Nl bnRpYWwgZnVuY3Rpb25zIGZpcnN0LiAgKi8KKworICB0ZF9pbml0X3AgPSB2 ZXJib3NlX2Rsc3ltIChoYW5kbGUsICJ0ZF9pbml0Iik7CisgIGlmICh0ZF9p bml0X3AgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICBlcnIgPSB0ZF9p bml0X3AgKCk7CisgIGlmIChlcnIgIT0gVERfT0spCisgICAgeworICAgICAg d2FybmluZyAoXygiQ2Fubm90IGluaXRpYWxpemUgbGlidGhyZWFkX2RiOiAl cyIpLCB0aHJlYWRfZGJfZXJyX3N0ciAoZXJyKSk7CisgICAgICByZXR1cm4g MDsKKyAgICB9CisKKyAgdGRfdGFfbmV3X3AgPSB2ZXJib3NlX2Rsc3ltICho YW5kbGUsICJ0ZF90YV9uZXciKTsKKyAgaWYgKHRkX3RhX25ld19wID09IE5V TEwpCisgICAgcmV0dXJuIDA7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgc3Ry dWN0dXJlIHRoYXQgaWRlbnRpZmllcyB0aGUgY2hpbGQgcHJvY2Vzcy4gICov CisgIHByb2NfaGFuZGxlLnB0aWQgPSBpbmZlcmlvcl9wdGlkOworCisgIC8q IE5vdyBhdHRlbXB0IHRvIG9wZW4gYSBjb25uZWN0aW9uIHRvIHRoZSB0aHJl YWQgbGlicmFyeS4gICovCisgIGVyciA9IHRkX3RhX25ld19wICgmcHJvY19o YW5kbGUsICZ0aHJlYWRfYWdlbnQpOworICBpZiAoZXJyICE9IFREX09LKQor ICAgIHsKKyAgICAgIHRkX3RhX25ld19wID0gTlVMTDsKKyAgICAgIGlmIChp bmZvX3ZlcmJvc2UpCisJcHJpbnRmX3VuZmlsdGVyZWQgKF8oInRkX3RhX25l dyBmYWlsZWQ6ICVzXG4iKSwKKwkJCSAgIHRocmVhZF9kYl9lcnJfc3RyIChl cnIpKTsKKyAgICAgIGVsc2UKKyAgICAgICAgc3dpdGNoIChlcnIpCisgICAg ICAgICAgeworICAgICAgICAgICAgY2FzZSBURF9OT0xJQlRIUkVBRDoKKyNp ZmRlZiBUSFJFQURfREJfSEFTX1REX1ZFUlNJT04KKyAgICAgICAgICAgIGNh c2UgVERfVkVSU0lPTjoKKyNlbmRpZgorICAgICAgICAgICAgICAvKiBUaGUg ZXJyb3JzIGFib3ZlIGFyZSBub3QgdW5leHBlY3RlZCBhbmQgc2lsZW50bHkg aWdub3JlZDoKKyAgICAgICAgICAgICAgICAgdGhleSBqdXN0IG1lYW4gd2Ug aGF2ZW4ndCBmb3VuZCBjb3JyZWN0IHZlcnNpb24gb2YKKyAgICAgICAgICAg ICAgICAgbGlidGhyZWFkX2RiIHlldC4gICovCisgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgd2Fy bmluZyAoXygidGRfdGFfbmV3IGZhaWxlZDogJXMiKSwgdGhyZWFkX2RiX2Vy cl9zdHIgKGVycikpOworICAgICAgICAgIH0KKyAgICAgIHJldHVybiAwOwor ICAgIH0KKworICB0ZF90YV9tYXBfaWQydGhyX3AgPSB2ZXJib3NlX2Rsc3lt IChoYW5kbGUsICJ0ZF90YV9tYXBfaWQydGhyIik7CisgIGlmICh0ZF90YV9t YXBfaWQydGhyX3AgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICB0ZF90 YV9tYXBfbHdwMnRocl9wID0gdmVyYm9zZV9kbHN5bSAoaGFuZGxlLCAidGRf dGFfbWFwX2x3cDJ0aHIiKTsKKyAgaWYgKHRkX3RhX21hcF9sd3AydGhyX3Ag PT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICB0ZF90YV90aHJfaXRlcl9w ID0gdmVyYm9zZV9kbHN5bSAoaGFuZGxlLCAidGRfdGFfdGhyX2l0ZXIiKTsK KyAgaWYgKHRkX3RhX3Rocl9pdGVyX3AgPT0gTlVMTCkKKyAgICByZXR1cm4g MDsKKworICB0ZF90aHJfdmFsaWRhdGVfcCA9IHZlcmJvc2VfZGxzeW0gKGhh bmRsZSwgInRkX3Rocl92YWxpZGF0ZSIpOworICBpZiAodGRfdGhyX3ZhbGlk YXRlX3AgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICB0ZF90aHJfZ2V0 X2luZm9fcCA9IHZlcmJvc2VfZGxzeW0gKGhhbmRsZSwgInRkX3Rocl9nZXRf aW5mbyIpOworICBpZiAodGRfdGhyX2dldF9pbmZvX3AgPT0gTlVMTCkKKyAg ICByZXR1cm4gMDsKKworICAvKiBUaGVzZSBhcmUgbm90IGVzc2VudGlhbC4g ICovCisgIHRkX3RhX2V2ZW50X2FkZHJfcCA9IGRsc3ltIChoYW5kbGUsICJ0 ZF90YV9ldmVudF9hZGRyIik7CisgIHRkX3RhX3NldF9ldmVudF9wID0gZGxz eW0gKGhhbmRsZSwgInRkX3RhX3NldF9ldmVudCIpOworICB0ZF90YV9ldmVu dF9nZXRtc2dfcCA9IGRsc3ltIChoYW5kbGUsICJ0ZF90YV9ldmVudF9nZXRt c2ciKTsKKyAgdGRfdGhyX2V2ZW50X2VuYWJsZV9wID0gZGxzeW0gKGhhbmRs ZSwgInRkX3Rocl9ldmVudF9lbmFibGUiKTsKKyAgdGRfdGhyX3Rsc19nZXRf YWRkcl9wID0gZGxzeW0gKGhhbmRsZSwgInRkX3Rocl90bHNfZ2V0X2FkZHIi KTsKKworICBwcmludGZfdW5maWx0ZXJlZCAoXygiW1RocmVhZCBkZWJ1Z2dp bmcgdXNpbmcgbGlidGhyZWFkX2RiIGVuYWJsZWRdXG4iKSk7CisKKyAgLyog VGhlIHRocmVhZCBsaWJyYXJ5IHdhcyBkZXRlY3RlZC4gIEFjdGl2YXRlIHRo ZSB0aHJlYWRfZGIgdGFyZ2V0LiAgKi8KKyAgcHVzaF90YXJnZXQgKCZ0aHJl YWRfZGJfb3BzKTsKKyAgdGhyZWFkX2RiX2hhbmRsZSA9IGhhbmRsZTsKKwor ICBlbmFibGVfdGhyZWFkX2V2ZW50X3JlcG9ydGluZyAoKTsKKyAgdGhyZWFk X2RiX2ZpbmRfbmV3X3RocmVhZHNfMSAoKTsKKyAgcmV0dXJuIDE7Cit9CisK Ky8qIExvb2t1cCBhIGxpYnJhcnkgaW4gd2hpY2ggZ2l2ZW4gc3ltYm9sIHJl c2lkZXMuCisgICBOb3RlOiB0aGlzIGlzIGxvb2tpbmcgaW4gR0RCIHByb2Nl c3MsIG5vdCBpbiB0aGUgaW5mZXJpb3IuCisgICBSZXR1cm5zIGxpYnJhcnkg bmFtZSwgb3IgTlVMTC4gICovCisKK3N0YXRpYyBjb25zdCBjaGFyICoKK2Rs YWRkcl90b19zb25hbWUgKGNvbnN0IHZvaWQgKmFkZHIpCit7CisgIERsX2lu Zm8gaW5mbzsKKworICBpZiAoZGxhZGRyIChhZGRyLCAmaW5mbykgIT0gMCkK KyAgICByZXR1cm4gaW5mby5kbGlfZm5hbWU7CisgIHJldHVybiBOVUxMOwor fQorCisvKiBBdHRlbXB0IHRvIHVzZSBMSUJSQVJZIGFzIGxpYnRocmVhZF9k Yi4gIExJQlJBUlkgY291bGQgYmUgYWJzb2x1dGUsCisgICByZWxhdGl2ZSwg b3IganVzdCBMSUJUSFJFQURfREIuICAqLworCitzdGF0aWMgaW50Cit0cnlf dGhyZWFkX2RiX2xvYWQgKGNvbnN0IGNoYXIgKmxpYnJhcnkpCit7CisgIHZv aWQgKmhhbmRsZTsKKworICBpZiAoaW5mb192ZXJib3NlKQorICAgIHByaW50 Zl91bmZpbHRlcmVkIChfKCJUcnlpbmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGli cmFyeTogJXMuXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbGlicmFy eSk7CisgIGhhbmRsZSA9IGRsb3BlbiAobGlicmFyeSwgUlRMRF9OT1cpOwor ICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgeworICAgICAgaWYgKGluZm9f dmVyYm9zZSkKKwlwcmludGZfdW5maWx0ZXJlZCAoXygiZGxvcGVuIGZhaWxl ZDogJXMuXG4iKSwgZGxlcnJvciAoKSk7CisgICAgICByZXR1cm4gMDsKKyAg ICB9CisKKyAgaWYgKGluZm9fdmVyYm9zZSAmJiBzdHJjaHIgKGxpYnJhcnks ICcvJykgPT0gTlVMTCkKKyAgICB7CisgICAgICB2b2lkICp0ZF9pbml0Owor CisgICAgICB0ZF9pbml0ID0gZGxzeW0gKGhhbmRsZSwgInRkX2luaXQiKTsK KyAgICAgIGlmICh0ZF9pbml0ICE9IE5VTEwpCisgICAgICAgIHsKKyAgICAg ICAgICBjb25zdCBjaGFyICpjb25zdCBsaWJwYXRoID0gZGxhZGRyX3RvX3Nv bmFtZSAodGRfaW5pdCk7CisKKyAgICAgICAgICBpZiAobGlicGF0aCAhPSBO VUxMKQorICAgICAgICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIkhvc3Qg JXMgcmVzb2x2ZWQgdG86ICVzLlxuIiksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlicmFyeSwgbGlicGF0aCk7CisgICAgICAgIH0KKyAg ICB9CisKKyAgaWYgKHRyeV90aHJlYWRfZGJfbG9hZF8xIChoYW5kbGUpKQor ICAgIHJldHVybiAxOworCisgIC8qIFRoaXMgbGlicmFyeSAicmVmdXNlZCIg dG8gd29yayBvbiBjdXJyZW50IGluZmVyaW9yLiAgKi8KKyAgZGxjbG9zZSAo aGFuZGxlKTsKKyAgcmV0dXJuIDA7Cit9CisKKworLyogU2VhcmNoIGxpYnRo cmVhZF9kYl9zZWFyY2hfcGF0aCBmb3IgbGlidGhyZWFkX2RiIHdoaWNoICJh Z3JlZXMiCisgICB0byB3b3JrIG9uIGN1cnJlbnQgaW5mZXJpb3IuICAqLwor CitzdGF0aWMgaW50Cit0aHJlYWRfZGJfbG9hZF9zZWFyY2ggKCkKK3sKKyAg Y2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgY29uc3QgY2hhciAqc2VhcmNoX3Bh dGggPSBsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGg7CisgIGludCByYyA9IDA7 CisKKyAgd2hpbGUgKCpzZWFyY2hfcGF0aCkKKyAgICB7CisgICAgICBjb25z dCBjaGFyICplbmQgPSBzdHJjaHIgKHNlYXJjaF9wYXRoLCAnOicpOworICAg ICAgaWYgKGVuZCkKKwl7CisJICBzaXplX3QgbGVuID0gZW5kIC0gc2VhcmNo X3BhdGg7CisgICAgICAgICAgaWYgKGxlbiArIDEgKyBzdHJsZW4gKExJQlRI UkVBRF9EQl9TTykgKyAxID4gc2l6ZW9mIChwYXRoKSkKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgY2hhciAqY3AgPSB4bWFsbG9jIChsZW4gKyAx KTsKKyAgICAgICAgICAgICAgbWVtY3B5IChjcCwgc2VhcmNoX3BhdGgsIGxl bik7CisgICAgICAgICAgICAgIGNwW2xlbl0gPSAnXDAnOworICAgICAgICAg ICAgICB3YXJuaW5nIChfKCJsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggY29t cG9uZW50IHRvbyBsb25nLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAi IGlnbm9yZWQ6ICVzLiIpLCBjcCk7CisgICAgICAgICAgICAgIHhmcmVlIChj cCk7CisgICAgICAgICAgICAgIHNlYXJjaF9wYXRoICs9IGxlbiArIDE7Cisg ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCSAgbWVt Y3B5IChwYXRoLCBzZWFyY2hfcGF0aCwgbGVuKTsKKwkgIHBhdGhbbGVuXSA9 ICdcMCc7CisJICBzZWFyY2hfcGF0aCArPSBsZW4gKyAxOworCX0KKyAgICAg IGVsc2UKKwl7CisgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoc2Vh cmNoX3BhdGgpOworCisgICAgICAgICAgaWYgKGxlbiArIDEgKyBzdHJsZW4g KExJQlRIUkVBRF9EQl9TTykgKyAxID4gc2l6ZW9mIChwYXRoKSkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgd2FybmluZyAoXygibGlidGhyZWFk X2RiX3NlYXJjaF9wYXRoIGNvbXBvbmVudCB0b28gbG9uZywiCisgICAgICAg ICAgICAgICAgICAgICAgICAgIiBpZ25vcmVkOiAlcy4iKSwgc2VhcmNoX3Bh dGgpOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwkg IG1lbWNweSAocGF0aCwgc2VhcmNoX3BhdGgsIGxlbiArIDEpOworCSAgc2Vh cmNoX3BhdGggKz0gbGVuOworCX0KKyAgICAgIHN0cmNhdCAocGF0aCwgIi8i KTsKKyAgICAgIHN0cmNhdCAocGF0aCwgTElCVEhSRUFEX0RCX1NPKTsKKyAg ICAgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpKQorCXsKKwkgIHJj ID0gMTsKKwkgIGJyZWFrOworCX0KKyAgICB9CisgIGlmIChyYyA9PSAwKQor ICAgIHJjID0gdHJ5X3RocmVhZF9kYl9sb2FkIChMSUJUSFJFQURfREJfU08p OworICBpZiAocmMgPT0gMCkKKyAgICB3YXJuaW5nIChfKCJVbmFibGUgdG8g ZmluZCBsaWJ0aHJlYWRfZGIgbWF0Y2hpbmcgaW5mZXJpb3IncyB0aHJlYWQi CisgICAgICAgICAgICAgICAiIGxpYnJhcnksIHRocmVhZCBkZWJ1Z2dpbmcg d2lsbCBub3QgYmUgYXZhaWxhYmxlLiIpKTsKKyAgcmV0dXJuIHJjOworfQor CisvKiBBdHRlbXB0IHRvIGxvYWQgYW5kIGluaXRpYWxpemUgbGlidGhyZWFk X2RiLgorICAgUmV0dXJuIDEgb24gc3VjY2Vzcy4KKyAqLworCitzdGF0aWMg aW50Cit0aHJlYWRfZGJfbG9hZCAodm9pZCkKK3sKKyAgY29uc3QgY2hhciAq c29uYW1lOworICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisKKyAg aWYgKHRocmVhZF9kYl9oYW5kbGUgIT0gTlVMTCkKKyAgICByZXR1cm4gMTsK KworICAvKiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aHJlYWRfZGIgb24gdGFy Z2V0cyB3aGljaCBjYW4gbm90IHJ1bgorICAgICAoZXhlY3V0YWJsZXMgbm90 IHJ1bm5pbmcgeWV0LCBjb3JlIGZpbGVzKSBmb3Igbm93LiAgKi8KKyAgaWYg KCF0YXJnZXRfaGFzX2V4ZWN1dGlvbikKKyAgICByZXR1cm4gMDsKKworICAv KiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aHJlYWRfZGIgZm9yIHJlbW90ZSB0 YXJnZXRzLiAgKi8KKyAgaWYgKCF0YXJnZXRfY2FuX3J1biAoJmN1cnJlbnRf dGFyZ2V0KSkKKyAgICByZXR1cm4gMDsKKworICBtc3ltID0gbG9va3VwX21p bmltYWxfc3ltYm9sICgibnB0bF92ZXJzaW9uIiwgTlVMTCwgTlVMTCk7Cisg IGlmICghbXN5bSkKKyAgICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9s ICgiX19saW51eHRocmVhZHNfdmVyc2lvbiIsIE5VTEwsIE5VTEwpOworCisg IC8qIFNvbWUgcmVhbGx5IG9sZCBsaWJwdGhyZWFkIHZlcnNpb25zIGRvIG5v dCBoYXZlIGVpdGhlciBvZiB0aGUgYWJvdmUuICAqLworICBpZiAoIW1zeW0p CisgICAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoIl9fcHRocmVh ZF90aHJlYWRzX2V2ZW50cyIsIE5VTEwsIE5VTEwpOworCisgIGlmICghbXN5 bSkKKyAgICAvKiBObyB0aHJlYWRzIHlldCAqLworICAgIHJldHVybiAwOwor CisgIHNvbmFtZSA9IHNvbGliX25hbWVfZnJvbV9hZGRyZXNzIChTWU1CT0xf VkFMVUVfQUREUkVTUyAobXN5bSkpOworICBpZiAoc29uYW1lKQorICAgIHsK KyAgICAgIC8qIEF0dGVtcHQgdG8gbG9hZCBsaWJ0aHJlYWRfZGIgZnJvbSB0 aGUgc2FtZSBkaXJlY3RvcnkuICovCisgICAgICBjaGFyIHBhdGhbUEFUSF9N QVhdLCAqY3A7CisgICAgICBzdHJjcHkgKHBhdGgsIHNvbmFtZSk7CisgICAg ICBjcCA9IHN0cnJjaHIgKHBhdGgsICcvJyk7CisgICAgICBpZiAoY3AgPT0g TlVMTCkKKwl7CisJICAvKiBFeHBlY3RlZCB0byBnZXQgZnVsbHkgcmVzb2x2 ZWQgcGF0aG5hbWUgZm9yIGxpYnB0aHJlYWQsCisgICAgICAgICAgICAgYnV0 IGdvdCBzb21ldGhpbmcgZWxzZS4gIFNlYXJjaCBmb3IgbWF0Y2hpbmcgbGli dGhyZWFkX2RiIGFuZAorICAgICAgICAgICAgIGhvcGUgdGhlcmUgaXMgb25l IHRoYXQgbWF0Y2hlcyBjdXJyZW50IGxpYnB0aHJlYWQuICAqLworCSAgd2Fy bmluZyAoXygiQ2Fubm90IG9idGFpbiBhYnNvbHV0ZSBwYXRoIG9mIHRocmVh ZCBsaWJyYXJ5OiAlcy4iKSwKKyAgICAgICAgICAgICAgICAgICBzb25hbWUp OworCSAgcmV0dXJuIHRocmVhZF9kYl9sb2FkX3NlYXJjaCAoKTsKKwl9Cisg ICAgICBzdHJjcHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKyAgICAg IGlmICh0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpKQorCXJldHVybiAxOwor ICAgIH0KKyAgcmV0dXJuIHRocmVhZF9kYl9sb2FkX3NlYXJjaCAoKTsKK30K Kwogc3RhdGljIHZvaWQKIGRpc2FibGVfdGhyZWFkX2V2ZW50X3JlcG9ydGlu ZyAodm9pZCkKIHsKQEAgLTU5Myw3NSArNzk5LDM0IEBAIHZvaWQKIGNoZWNr X2Zvcl90aHJlYWRfZGIgKHZvaWQpCiB7CiAgIHRkX2Vycl9lIGVycjsKLSAg c3RhdGljIGludCBhbHJlYWR5X2xvYWRlZDsKKyAgc3RhdGljIHZvaWQgKmxh c3RfbG9hZGVkOwogCiAgIC8qIERvIG5vdGhpbmcgaWYgd2UgY291bGRuJ3Qg bG9hZCBsaWJ0aHJlYWRfZGIuc28uMS4gICovCi0gIGlmICh0ZF90YV9uZXdf cCA9PSBOVUxMKQorICBpZiAoIXRocmVhZF9kYl9sb2FkICgpKQogICAgIHJl dHVybjsKIAogICAvKiBGaXJzdCB0aW1lIHRocm91Z2gsIHJlcG9ydCB0aGF0 IGxpYnRocmVhZF9kYiB3YXMgc3VjY2Vzc2Z1bHkKICAgICAgbG9hZGVkLiAg Q2FuJ3QgcHJpbnQgdGhpcyBpbiBpbiB0aHJlYWRfZGJfbG9hZCBhcywgYXQg dGhhdCBzdGFnZSwKLSAgICAgdGhlIGludGVycHJldGVyIGFuZCBpdCdzIGNv bnNvbGUgaGF2ZW4ndCBzdGFydGVkLiAgKi8KKyAgICAgdGhlIGludGVycHJl dGVyIGFuZCBpdCdzIGNvbnNvbGUgaGF2ZW4ndCBzdGFydGVkLgorICAgICBX ZSB0cmFjayB0ZF90YV9uZXdfcCBiZWNhdXNlIHRoZSB1c2VyIG1heSBzd2l0 Y2ggZXhlY3V0YWJsZXMsCisgICAgIGFuZCBhcyBhIHJlc3VsdCB3ZSBtYXkg ZGVjaWRlIHRvIHVzZSBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mCisgICAgIGxp YnRocmVhZF9kYi4gKi8KIAotICBpZiAoIWFscmVhZHlfbG9hZGVkKQorICBp ZiAobGFzdF9sb2FkZWQgIT0gdGRfdGFfbmV3X3ApCiAgICAgewotICAgICAg RGxfaW5mbyBpbmZvOwotICAgICAgY29uc3QgY2hhciAqbGlicmFyeSA9IE5V TEw7Ci0gICAgICBpZiAoZGxhZGRyICgoKnRkX3RhX25ld19wKSwgJmluZm8p ICE9IDApCi0JbGlicmFyeSA9IGluZm8uZGxpX2ZuYW1lOworICAgICAgbGFz dF9sb2FkZWQgPSB0ZF90YV9uZXdfcDsKIAotICAgICAgLyogVHJ5IGRsaW5m bz8gICovCi0KLSAgICAgIGlmIChsaWJyYXJ5ID09IE5VTEwpCi0JLyogUGFy YW5vaWQgLSBkb24ndCBsZXQgYSBOVUxMIHBhdGggc2xpcCB0aHJvdWdoLiAg Ki8KLQlsaWJyYXJ5ID0gTElCVEhSRUFEX0RCX1NPOwotCi0gICAgICBpZiAo aW5mb192ZXJib3NlKQotCXByaW50Zl91bmZpbHRlcmVkIChfKCJVc2luZyBo b3N0IGxpYnRocmVhZF9kYiBsaWJyYXJ5IFwiJXNcIi5cbiIpLAotCQkJICAg bGlicmFyeSk7Ci0gICAgICBhbHJlYWR5X2xvYWRlZCA9IDE7Ci0gICAgfQot Ci0gIGlmICh1c2luZ190aHJlYWRfZGIpCi0gICAgLyogTm90aGluZyB0byBk by4gIFRoZSB0aHJlYWQgbGlicmFyeSB3YXMgYWxyZWFkeSBkZXRlY3RlZCBh bmQgdGhlCi0gICAgICAgdGFyZ2V0IHZlY3RvciB3YXMgYWxyZWFkeSBhY3Rp dmF0ZWQuICAqLwotICAgIHJldHVybjsKLQotICAvKiBEb24ndCBhdHRlbXB0 IHRvIHVzZSB0aHJlYWRfZGIgb24gdGFyZ2V0cyB3aGljaCBjYW4gbm90IHJ1 bgotICAgICAoZXhlY3V0YWJsZXMgbm90IHJ1bm5pbmcgeWV0LCBjb3JlIGZp bGVzKSBmb3Igbm93LiAgKi8KLSAgaWYgKCF0YXJnZXRfaGFzX2V4ZWN1dGlv bikKLSAgICByZXR1cm47Ci0KLSAgLyogRG9uJ3QgYXR0ZW1wdCB0byB1c2Ug dGhyZWFkX2RiIGZvciByZW1vdGUgdGFyZ2V0cy4gICovCi0gIGlmICghdGFy Z2V0X2Nhbl9ydW4gKCZjdXJyZW50X3RhcmdldCkpCi0gICAgcmV0dXJuOwot Ci0gIC8qIEluaXRpYWxpemUgdGhlIHN0cnVjdHVyZSB0aGF0IGlkZW50aWZp ZXMgdGhlIGNoaWxkIHByb2Nlc3MuICAqLwotICBwcm9jX2hhbmRsZS5wdGlk ID0gaW5mZXJpb3JfcHRpZDsKLQotICAvKiBOb3cgYXR0ZW1wdCB0byBvcGVu IGEgY29ubmVjdGlvbiB0byB0aGUgdGhyZWFkIGxpYnJhcnkuICAqLwotICBl cnIgPSB0ZF90YV9uZXdfcCAoJnByb2NfaGFuZGxlLCAmdGhyZWFkX2FnZW50 KTsKLSAgc3dpdGNoIChlcnIpCi0gICAgewotICAgIGNhc2UgVERfTk9MSUJU SFJFQUQ6Ci0gICAgICAvKiBObyB0aHJlYWQgbGlicmFyeSB3YXMgZGV0ZWN0 ZWQuICAqLwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFREX09LOgotICAg ICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIltUaHJlYWQgZGVidWdnaW5nIHVz aW5nIGxpYnRocmVhZF9kYiBlbmFibGVkXVxuIikpOwotCi0gICAgICAvKiBU aGUgdGhyZWFkIGxpYnJhcnkgd2FzIGRldGVjdGVkLiAgQWN0aXZhdGUgdGhl IHRocmVhZF9kYiB0YXJnZXQuICAqLwotICAgICAgcHVzaF90YXJnZXQgKCZ0 aHJlYWRfZGJfb3BzKTsKLSAgICAgIHVzaW5nX3RocmVhZF9kYiA9IDE7Ci0K LSAgICAgIGVuYWJsZV90aHJlYWRfZXZlbnRfcmVwb3J0aW5nICgpOwotICAg ICAgdGhyZWFkX2RiX2ZpbmRfbmV3X3RocmVhZHNfMSAoKTsKLSAgICAgIGJy ZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIHdhcm5pbmcgKF8oIkNhbm5v dCBpbml0aWFsaXplIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeTogJXMiKSwK LQkgICAgICAgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwotICAgICAgYnJl YWs7CisgICAgICBpZiAoaW5mb192ZXJib3NlIHx8ICpsaWJ0aHJlYWRfZGJf c2VhcmNoX3BhdGgpCisgICAgICAgIHsKKyAgICAgICAgICBjb25zdCBjaGFy ICpsaWJyYXJ5OworCisgICAgICAgICAgbGlicmFyeSA9IGRsYWRkcl90b19z b25hbWUgKCp0ZF90YV9uZXdfcCk7CisgICAgICAgICAgaWYgKGxpYnJhcnkg PT0gTlVMTCkKKyAgICAgICAgICAgIGxpYnJhcnkgPSBMSUJUSFJFQURfREJf U087CisKKyAgICAgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiVXNpbmcg aG9zdCBsaWJ0aHJlYWRfZGIgbGlicmFyeSBcIiVzXCIuXG4iKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSk7CisgICAgICAgIH0K ICAgICB9CiB9CiAKQEAgLTc4Myw3ICs5NDgsOSBAQCB0aHJlYWRfZGJfZGV0 YWNoIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCiAKICAgLyogRGV0YWNoIHRo cmVhZF9kYiB0YXJnZXQgb3BzLiAgKi8KICAgdW5wdXNoX3RhcmdldCAoJnRo cmVhZF9kYl9vcHMpOwotICB1c2luZ190aHJlYWRfZGIgPSAwOworICBpZiAo dGhyZWFkX2RiX2hhbmRsZSkKKyAgICBkbGNsb3NlICh0aHJlYWRfZGJfaGFu ZGxlKTsKKyAgdGhyZWFkX2RiX2hhbmRsZSA9IE5VTEw7CiAKICAgdGFyZ2V0 X2JlbmVhdGgtPnRvX2RldGFjaCAodGFyZ2V0X2JlbmVhdGgsIGFyZ3MsIGZy b21fdHR5KTsKIH0KQEAgLTg5Niw3ICsxMDYzLDkgQEAgdGhyZWFkX2RiX3dh aXQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCiAgICAgewogICAgICAgcmVt b3ZlX3RocmVhZF9ldmVudF9icmVha3BvaW50cyAoKTsKICAgICAgIHVucHVz aF90YXJnZXQgKCZ0aHJlYWRfZGJfb3BzKTsKLSAgICAgIHVzaW5nX3RocmVh ZF9kYiA9IDA7CisgICAgICBpZiAodGhyZWFkX2RiX2hhbmRsZSkKKwlkbGNs b3NlICh0aHJlYWRfZGJfaGFuZGxlKTsKKyAgICAgIHRocmVhZF9kYl9oYW5k bGUgPSBOVUxMOwogCiAgICAgICByZXR1cm4gcHRpZDsKICAgICB9CkBAIC05 NDQsNyArMTExMyw5IEBAIHRocmVhZF9kYl9tb3Vybl9pbmZlcmlvciAoc3Ry dWN0IHRhcmdldF8KIAogICAvKiBEZXRhY2ggdGhyZWFkX2RiIHRhcmdldCBv cHMuICAqLwogICB1bnB1c2hfdGFyZ2V0IChvcHMpOwotICB1c2luZ190aHJl YWRfZGIgPSAwOworICBpZiAodGhyZWFkX2RiX2hhbmRsZSkKKyAgICBkbGNs b3NlICh0aHJlYWRfZGJfaGFuZGxlKTsKKyAgdGhyZWFkX2RiX2hhbmRsZSA9 IE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTExODcsMTMgKzEzNTgsMjgg QEAgZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZQog dm9pZAogX2luaXRpYWxpemVfdGhyZWFkX2RiICh2b2lkKQogewotICAvKiBP bmx5IGluaXRpYWxpemUgdGhlIG1vZHVsZSBpZiB3ZSBjYW4gbG9hZCBsaWJ0 aHJlYWRfZGIuICAqLwotICBpZiAodGhyZWFkX2RiX2xvYWQgKCkpCi0gICAg ewotICAgICAgaW5pdF90aHJlYWRfZGJfb3BzICgpOwotICAgICAgYWRkX3Rh cmdldCAoJnRocmVhZF9kYl9vcHMpOworICBpbml0X3RocmVhZF9kYl9vcHMg KCk7CisgIGFkZF90YXJnZXQgKCZ0aHJlYWRfZGJfb3BzKTsKIAotICAgICAg LyogQWRkIG91cnNlbHZlcyB0byBvYmpmaWxlIGV2ZW50IGNoYWluLiAgKi8K LSAgICAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhyZWFkX2Ri X25ld19vYmpmaWxlKTsKLSAgICB9CisgIC8qIERlZmVyIGxvYWRpbmcgb2Yg bGlidGhyZWFkX2RiLnNvIHVudGlsIGluZmVyaW9yIGlzIHJ1bm5pbmcuCisg ICAgIFRoaXMgYWxsb3dzIGdkYiB0byBsb2FkIGNvcnJlY3QgbGlidGhyZWFk X2RiIGZvciBhIGdpdmVuCisgICAgIGV4ZWN1dGFibGUgLS0gdGhlcmUgY291 bGQgYmUgbXV0aXBsZSB2ZXJzaW9ucyBvZiBnbGliYywKKyAgICAgY29tcGls ZWQgd2l0aCBMaW51eFRocmVhZHMgb3IgTlBUTCwgYW5kIHVudGlsIHRoZXJl IGlzCisgICAgIGEgcnVubmluZyBpbmZlcmlvciwgd2UgY2FuJ3QgdGVsbCB3 aGljaCBsaWJ0aHJlYWRfZGIgaXMKKyAgICAgdGhlIGNvcnJlY3Qgb25lIHRv IGxvYWQuICovCisKKyAgbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoID0geHN0 cmR1cCAoTElCVEhSRUFEX0RCX1NFQVJDSF9QQVRIKTsKKworICBhZGRfc2V0 c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJsaWJ0aHJlYWQtZGItc2Vh cmNoLXBhdGgiLAorCQkJCSAgICAgY2xhc3Nfc3VwcG9ydCwKKwkJCQkgICAg ICZsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGgsIF8oIlwKK1NldCBzZWFyY2gg cGF0aCBmb3IgbGlidGhyZWFkX2RiLiIpLCBfKCJcCitTaG93IHRoZSBjdXJy ZW50IHNlYXJjaCBwYXRoIG9yIGxpYnRocmVhZF9kYi4iKSwgXygiXAorVGhp cyBwYXRoIGlzIHVzZWQgdG8gc2VhcmNoIGZvciBsaWJ0aHJlYWRfZGIgdG8g YmUgbG9hZGVkIGludG8gXAorZ2RiIGl0c2VsZi4iKSwKKwkJCSAgICBOVUxM LAorCQkJICAgIE5VTEwsCisJCQkgICAgJnNldGxpc3QsICZzaG93bGlzdCk7 CisgIC8qIEFkZCBvdXJzZWx2ZXMgdG8gb2JqZmlsZSBldmVudCBjaGFpbi4g ICovCisgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhyZWFkX2Ri X25ld19vYmpmaWxlKTsKIH0KSW5kZXg6IGRvYy9nZGIudGV4aW5mbwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2Ri L2RvYy9nZGIudGV4aW5mbyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41ODAK ZGlmZiAtdSAtcCAtdSAtcjEuNTgwIGdkYi50ZXhpbmZvCi0tLSBkb2MvZ2Ri LnRleGluZm8JMTUgQXByIDIwMDkgMjI6MjA6MzIgLTAwMDAJMS41ODAKKysr IGRvYy9nZGIudGV4aW5mbwkyMCBBcHIgMjAwOSAxNzozNTo0MCAtMDAwMApA QCAtMjQyOSw2ICsyNDI5LDkgQEAgYSBjb21tYW5kIHRvIGFwcGx5IGEgY29t bWFuZCB0byBhIGxpc3QgbwogQGl0ZW0gdGhyZWFkLXNwZWNpZmljIGJyZWFr cG9pbnRzCiBAaXRlbSBAc2FtcHtzZXQgcHJpbnQgdGhyZWFkLWV2ZW50c30s IHdoaWNoIGNvbnRyb2xzIHByaW50aW5nIG9mIAogbWVzc2FnZXMgb24gdGhy ZWFkIHN0YXJ0IGFuZCBleGl0LgorQGl0ZW0gQHNhbXB7c2V0IGxpYnRocmVh ZC1kYi1zZWFyY2gtcGF0aCBAdmFye3BhdGh9fSwgd2hpY2ggbGV0cwordGhl IHVzZXIgc3BlY2lmeSB3aGljaCBAY29kZXtsaWJ0aHJlYWRfZGJ9IHRvIHVz ZSBpZiB0aGUgZGVmYXVsdCBjaG9pY2UKK2lzbid0IGNvbXBhdGlibGUgd2l0 aCB0aGUgcHJvZ3JhbS4KIEBlbmQgaXRlbWl6ZQogCiBAcXVvdGF0aW9uCkBA IC0yNjQ3LDYgKzI2NTAsNDAgQEAgcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0 aHJlYWRzLgogQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5nIFdhdGNo cG9pbnRzfSwgZm9yIGluZm9ybWF0aW9uIGFib3V0CiB3YXRjaHBvaW50cyBp biBwcm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCiAKK0B0YWJsZSBA Y29kZQorQGtpbmRleCBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoCitA Y2luZGV4IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9CitA aXRlbSBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoIEBye1t9QHZhcntw YXRofUBye119CitJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCwgQHZhcntwYXRo fSBpcyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mCitkaXJlY3RvcmllcyBA dmFsdWV7R0RCTn0gd2lsbCB1c2UgdG8gc2VhcmNoIGZvciBAY29kZXtsaWJ0 aHJlYWRfZGJ9LgorSWYgeW91IG9taXQgQHZhcntwYXRofSwgQHNhbXB7bGli dGhyZWFkLWRiLXNlYXJjaC1wYXRofSB3aWxsIGJlIHJlc2V0IHRvCithbiBl bXB0eSBsaXN0LgorCitPbiBAc2N7Z251fS9MaW51eCBhbmQgU29sYXJpcyBz eXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKK0Bjb2Rl e2xpYnRocmVhZF9kYn0gbGlicmFyeSB0byBvYnRhaW4gaW5mb3JtYXRpb24g YWJvdXQgdGhyZWFkcyBpbiB0aGUKK2luZmVyaW9yIHByb2Nlc3MuICBAdmFs dWV7R0RCTn0gZmlyc3QgYXR0ZW1wdHMgdG8gdXNlCitAY29kZXtsaWJ0aHJl YWRfZGJ9IGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoCitA Y29kZXtsaWJwdGhyZWFkfSB3YXMgbG9hZGVkIGluIHRoZSBpbmZlcmlvciBw cm9jZXNzLiAgSWYgdGhhdCBmYWlscywKK0B2YWx1ZXtHREJOfSB3aWxsIHVz ZSBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9LAorYW5kIHRoZW4g ZGVmYXVsdCBzeXN0ZW0gc2hhcmVkIGxpYnJhcnkgZGlyZWN0b3JpZXMsIHRv IGZpbmQKK0Bjb2Rle2xpYnRocmVhZF9kYn0uCisKK0ZvciBhbnkgQGNvZGV7 bGlidGhyZWFkX2RifSBsaWJyYXJ5IEB2YWx1ZXtHREJOfSBmaW5kcyBpbiBh Ym92ZSBkaXJlY3RvcmllcywKK0B2YWx1ZXtHREJOfSBhdHRlbXB0cyB0byBp bml0aWFsaXplIGl0IHdpdGggdGhlIGN1cnJlbnQgaW5mZXJpb3IgcHJvY2Vz cy4KK0lmIHRoaXMgaW5pdGlhbGl6YXRpb24gZmFpbHMgKHdoaWNoIGNvdWxk IGhhcHBlbiBiZWNhdXNlIG9mIGEgdmVyc2lvbgorbWlzbWF0Y2ggYmV0d2Vl biBAY29kZXtsaWJ0aHJlYWRfZGJ9IGFuZCBAY29kZXtsaWJwdGhyZWFkfSks IEB2YWx1ZXtHREJOfQord2lsbCB1bmxvYWQgQGNvZGV7bGlidGhyZWFkX2Ri fSwgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgZGlyZWN0b3J5LgorSWYg bm9uZSBvZiBAY29kZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcmllcyBpbml0aWFs aXplIHN1Y2Nlc3NmdWxseSwKK0B2YWx1ZXtHREJOfSB3aWxsIGlzc3VlIGEg d2FybmluZyBhbmQgdGhyZWFkIGRlYnVnZ2luZyB3aWxsIGJlIGRpc2FibGVk LgorCitTZXR0aW5nIEBjb2Rle2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0g aXMgY3VycmVudGx5IGltcGxlbWVudGVkCitvbmx5IG9uIHNvbWUgcGxhdGZv cm1zLgorCitAa2luZGV4IHNob3cgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRo IAorQGl0ZW0gc2hvdyBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGggCitEaXNw bGF5IGN1cnJlbnQgbGlidGhyZWFkX2RiIHNlYXJjaCBwYXRoLgorQGVuZCB0 YWJsZQorCiBAbm9kZSBQcm9jZXNzZXMKIEBzZWN0aW9uIERlYnVnZ2luZyBQ cm9ncmFtcyB3aXRoIE11bHRpcGxlIFByb2Nlc3NlcwogCg== --0016361e8252d13faf0467fffa9d--