From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32737 invoked by alias); 17 Apr 2009 19:13:24 -0000 Received: (qmail 32718 invoked by uid 22791); 17 Apr 2009 19:13:21 -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.45.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 17 Apr 2009 19:13:14 +0000 Received: from wpaz13.hot.corp.google.com (wpaz13.hot.corp.google.com [172.24.198.77]) by smtp-out.google.com with ESMTP id n3HJDA04007910 for ; Fri, 17 Apr 2009 12:13:11 -0700 Received: from qw-out-2122.google.com (qwi5.prod.google.com [10.241.195.5]) by wpaz13.hot.corp.google.com with ESMTP id n3HJD9s8017160 for ; Fri, 17 Apr 2009 12:13:09 -0700 Received: by qw-out-2122.google.com with SMTP id 5so833094qwi.47 for ; Fri, 17 Apr 2009 12:13:09 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.29.12 with SMTP id o12mr4243425qac.115.1239995588724; Fri, 17 Apr 2009 12:13:08 -0700 (PDT) In-Reply-To: References: <20090406203920.CCD6F19C4EC@localhost> <1239225742.8871.145.camel@localhost.localdomain> <8ac60eac0904101205h76d8377cv843db8177e74f8af@mail.gmail.com> Date: Fri, 17 Apr 2009 19:13:00 -0000 Message-ID: <8ac60eac0904171213p4c075224x5f5c3661d240f383@mail.gmail.com> Subject: Re: [patch][rfc] Allow GDB to search for the right libthread_db.so.1 From: Paul Pluzhnikov To: tromey@redhat.com Cc: Thiago Jung Bauermann , gdb-patches ml Content-Type: multipart/mixed; boundary=0015175cde4296cab50467c4f889 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/msg00459.txt.bz2 --0015175cde4296cab50467c4f889 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 1251 On Thu, Apr 16, 2009 at 10:53 AM, Tom Tromey wrote: > If you want, I think it would make sense to unconditionally print this > message if a search path was specified. Good idea. Fixed. Attached is a revised patch, with updated ChangeLog and documentation changes. Tested on Linux/x86_64 with no regressions. Thanks, -- Paul Pluzhnikov 2009-04-17 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-17 Paul Pluzhnikov * gdb.texinfo (Threads): Document libthread-db-search-path. --0015175cde4296cab50467c4f889 Content-Type: text/plain; charset=US-ASCII; name="gdb-thread-db.20090417.txt" Content-Disposition: attachment; filename="gdb-thread-db.20090417.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftn7ymz80 Content-length: 26796 SW5kZXg6IGdkYl90aHJlYWRfZGIuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2dkYl90aHJlYWRfZGIuaCx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMgpkaWZmIC11IC1wIC11IC1yMS4x MiBnZGJfdGhyZWFkX2RiLmgKLS0tIGdkYl90aHJlYWRfZGIuaAkxOCBNYXIg MjAwOSAwODo1MToxMSAtMDAwMAkxLjEyCisrKyBnZGJfdGhyZWFkX2RiLmgJ MTcgQXByIDIwMDkgMTg6Mjc6NDMgLTAwMDAKQEAgLTEsNSArMSwxNCBAQAog I2lmZGVmIEhBVkVfVEhSRUFEX0RCX0gKICNpbmNsdWRlIDx0aHJlYWRfZGIu aD4KKworI2lmbmRlZiBMSUJUSFJFQURfREJfU08KKyNkZWZpbmUgTElCVEhS RUFEX0RCX1NPICJsaWJ0aHJlYWRfZGIuc28uMSIKKyNlbmRpZgorCisjaWZu ZGVmIExJQlRIUkVBRF9EQl9TRUFSQ0hfUEFUSAorI2RlZmluZSBMSUJUSFJF QURfREJfU0VBUkNIX1BBVEggIiIKKyNlbmRpZgorCiAjZWxzZQogCiAvKiBD b3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDcsIDIwMDgsIDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkluZGV4OiBsaW51eC10aHJl YWQtZGIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL2xpbnV4LXRocmVhZC1kYi5jLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjU0CmRpZmYgLXUgLXAgLXUgLXIxLjU0IGxpbnV4LXRocmVh ZC1kYi5jCi0tLSBsaW51eC10aHJlYWQtZGIuYwkyNyBGZWIgMjAwOSAyMDoz NDo0MSAtMDAwMAkxLjU0CisrKyBsaW51eC10aHJlYWQtZGIuYwkxNyBBcHIg MjAwOSAxODoyNzo0MyAtMDAwMApAQCAtMjYsMTMgKzI2LDE2IEBACiAjaW5j 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 K3RyeV90aHJlYWRfZGJfbG9hZF8xKHZvaWQgKmhhbmRsZSkKK3sKKyAgdGRf ZXJyX2UgZXJyOworCisgIC8qIEluaXRpYWxpemUgcG9pbnRlcnMgdG8gdGhl IGR5bmFtaWMgbGlicmFyeSBmdW5jdGlvbnMgd2Ugd2lsbCB1c2UuCisgICAg IEVzc2VudGlhbCBmdW5jdGlvbnMgZmlyc3QuICAqLworCisgIHRkX2luaXRf cCA9IHZlcmJvc2VfZGxzeW0gKGhhbmRsZSwgInRkX2luaXQiKTsKKyAgaWYg KHRkX2luaXRfcCA9PSBOVUxMKQorICAgIHJldHVybiAwOworCisgIGVyciA9 IHRkX2luaXRfcCAoKTsKKyAgaWYgKGVyciAhPSBURF9PSykKKyAgICB7Cisg ICAgICB3YXJuaW5nIChfKCJDYW5ub3QgaW5pdGlhbGl6ZSBsaWJ0aHJlYWRf ZGI6ICVzIiksIHRocmVhZF9kYl9lcnJfc3RyIChlcnIpKTsKKyAgICAgIHJl dHVybiAwOworICAgIH0KKworICB0ZF90YV9uZXdfcCA9IHZlcmJvc2VfZGxz eW0gKGhhbmRsZSwgInRkX3RhX25ldyIpOworICBpZiAodGRfdGFfbmV3X3Ag PT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICAvKiBJbml0aWFsaXplIHRo ZSBzdHJ1Y3R1cmUgdGhhdCBpZGVudGlmaWVzIHRoZSBjaGlsZCBwcm9jZXNz LiAgKi8KKyAgcHJvY19oYW5kbGUucHRpZCA9IGluZmVyaW9yX3B0aWQ7CisK KyAgLyogTm93IGF0dGVtcHQgdG8gb3BlbiBhIGNvbm5lY3Rpb24gdG8gdGhl IHRocmVhZCBsaWJyYXJ5LiAgKi8KKyAgZXJyID0gdGRfdGFfbmV3X3AgKCZw cm9jX2hhbmRsZSwgJnRocmVhZF9hZ2VudCk7CisgIGlmIChlcnIgIT0gVERf T0spCisgICAgeworICAgICAgdGRfdGFfbmV3X3AgPSBOVUxMOworICAgICAg aWYgKGluZm9fdmVyYm9zZSkKKwlwcmludGZfdW5maWx0ZXJlZCAoXygidGRf dGFfbmV3IGZhaWxlZDogJXNcbiIpLAorCQkJICAgdGhyZWFkX2RiX2Vycl9z dHIgKGVycikpOworICAgICAgZWxzZQorICAgICAgICBzd2l0Y2ggKGVycikK KyAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIFREX05PTElCVEhSRUFE OgorI2lmZGVmIFRIUkVBRF9EQl9IQVNfVERfVkVSU0lPTgorICAgICAgICAg ICAgY2FzZSBURF9WRVJTSU9OOgorI2VuZGlmCisgICAgICAgICAgICAgIC8q IFRoZSBlcnJvcnMgYWJvdmUgYXJlIG5vdCB1bmV4cGVjdGVkIGFuZCBzaWxl bnRseSBpZ25vcmVkOgorICAgICAgICAgICAgICAgICB0aGV5IGp1c3QgbWVh biB3ZSBoYXZlbid0IGZvdW5kIGNvcnJlY3QgdmVyc2lvbiBvZgorICAgICAg ICAgICAgICAgICBsaWJ0aHJlYWRfZGIgeWV0LiAgKi8KKyAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg ICB3YXJuaW5nIChfKCJ0ZF90YV9uZXcgZmFpbGVkOiAlcyIpLCB0aHJlYWRf ZGJfZXJyX3N0ciAoZXJyKSk7CisgICAgICAgICAgfQorICAgICAgcmV0dXJu IDA7CisgICAgfQorCisgIHRkX3RhX21hcF9pZDJ0aHJfcCA9IHZlcmJvc2Vf ZGxzeW0gKGhhbmRsZSwgInRkX3RhX21hcF9pZDJ0aHIiKTsKKyAgaWYgKHRk X3RhX21hcF9pZDJ0aHJfcCA9PSBOVUxMKQorICAgIHJldHVybiAwOworCisg IHRkX3RhX21hcF9sd3AydGhyX3AgPSB2ZXJib3NlX2Rsc3ltIChoYW5kbGUs ICJ0ZF90YV9tYXBfbHdwMnRociIpOworICBpZiAodGRfdGFfbWFwX2x3cDJ0 aHJfcCA9PSBOVUxMKQorICAgIHJldHVybiAwOworCisgIHRkX3RhX3Rocl9p dGVyX3AgPSB2ZXJib3NlX2Rsc3ltIChoYW5kbGUsICJ0ZF90YV90aHJfaXRl ciIpOworICBpZiAodGRfdGFfdGhyX2l0ZXJfcCA9PSBOVUxMKQorICAgIHJl dHVybiAwOworCisgIHRkX3Rocl92YWxpZGF0ZV9wID0gdmVyYm9zZV9kbHN5 bSAoaGFuZGxlLCAidGRfdGhyX3ZhbGlkYXRlIik7CisgIGlmICh0ZF90aHJf dmFsaWRhdGVfcCA9PSBOVUxMKQorICAgIHJldHVybiAwOworCisgIHRkX3Ro cl9nZXRfaW5mb19wID0gdmVyYm9zZV9kbHN5bSAoaGFuZGxlLCAidGRfdGhy X2dldF9pbmZvIik7CisgIGlmICh0ZF90aHJfZ2V0X2luZm9fcCA9PSBOVUxM KQorICAgIHJldHVybiAwOworCisgIC8qIFRoZXNlIGFyZSBub3QgZXNzZW50 aWFsLiAgKi8KKyAgdGRfdGFfZXZlbnRfYWRkcl9wID0gZGxzeW0gKGhhbmRs ZSwgInRkX3RhX2V2ZW50X2FkZHIiKTsKKyAgdGRfdGFfc2V0X2V2ZW50X3Ag PSBkbHN5bSAoaGFuZGxlLCAidGRfdGFfc2V0X2V2ZW50Iik7CisgIHRkX3Rh X2V2ZW50X2dldG1zZ19wID0gZGxzeW0gKGhhbmRsZSwgInRkX3RhX2V2ZW50 X2dldG1zZyIpOworICB0ZF90aHJfZXZlbnRfZW5hYmxlX3AgPSBkbHN5bSAo aGFuZGxlLCAidGRfdGhyX2V2ZW50X2VuYWJsZSIpOworICB0ZF90aHJfdGxz X2dldF9hZGRyX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGhyX3Rsc19nZXRf YWRkciIpOworCisgIHByaW50Zl91bmZpbHRlcmVkIChfKCJbVGhyZWFkIGRl YnVnZ2luZyB1c2luZyBsaWJ0aHJlYWRfZGIgZW5hYmxlZF1cbiIpKTsKKwor ICAvKiBUaGUgdGhyZWFkIGxpYnJhcnkgd2FzIGRldGVjdGVkLiAgQWN0aXZh dGUgdGhlIHRocmVhZF9kYiB0YXJnZXQuICAqLworICBwdXNoX3RhcmdldCAo JnRocmVhZF9kYl9vcHMpOworICB0aHJlYWRfZGJfaGFuZGxlID0gaGFuZGxl OworCisgIGVuYWJsZV90aHJlYWRfZXZlbnRfcmVwb3J0aW5nICgpOworICB0 aHJlYWRfZGJfZmluZF9uZXdfdGhyZWFkc18xICgpOworICByZXR1cm4gMTsK K30KKworLyogTG9va3VwIGEgbGlicmFyeSBpbiB3aGljaCBnaXZlbiBzeW1i b2wgcmVzaWRlcy4KKyAgIE5vdGU6IHRoaXMgaXMgbG9va2luZyBpbiBHREIg cHJvY2Vzcywgbm90IGluIHRoZSBpbmZlcmlvci4KKyAgIFJldHVybnMgbGli cmFyeSBuYW1lLCBvciBOVUxMLiAgKi8KKworc3RhdGljIGNvbnN0IGNoYXIg KgorZGxhZGRyX3RvX3NvbmFtZSAoY29uc3Qgdm9pZCAqYWRkcikKK3sKKyAg RGxfaW5mbyBpbmZvOworCisgIGlmIChkbGFkZHIgKGFkZHIsICZpbmZvKSAh PSAwKQorICAgIHJldHVybiBpbmZvLmRsaV9mbmFtZTsKKyAgcmV0dXJuIE5V TEw7Cit9CisKKy8qIEF0dGVtcHQgdG8gdXNlIExJQlJBUlkgYXMgbGlidGhy ZWFkX2RiLiAgTElCUkFSWSBjb3VsZCBiZSBhYnNvbHV0ZSwKKyAgIHJlbGF0 aXZlLCBvciBqdXN0IExJQlRIUkVBRF9EQi4gICovCisKK3N0YXRpYyBpbnQK K3RyeV90aHJlYWRfZGJfbG9hZCAoY29uc3QgY2hhciAqbGlicmFyeSkKK3sK KyAgdm9pZCAqaGFuZGxlOworCisgIGlmIChpbmZvX3ZlcmJvc2UpCisgICAg cHJpbnRmX3VuZmlsdGVyZWQgKF8oIlRyeWluZyBob3N0IGxpYnRocmVhZF9k YiBsaWJyYXJ5OiAlcy5cbiIpLAorICAgICAgICAgICAgICAgICAgICAgICBs aWJyYXJ5KTsKKyAgaGFuZGxlID0gZGxvcGVuIChsaWJyYXJ5LCBSVExEX05P Vyk7CisgIGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICB7CisgICAgICBpZiAo aW5mb192ZXJib3NlKQorCXByaW50Zl91bmZpbHRlcmVkIChfKCJkbG9wZW4g ZmFpbGVkOiAlcy5cbiIpLCBkbGVycm9yICgpKTsKKyAgICAgIHJldHVybiAw OworICAgIH0KKworICBpZiAoaW5mb192ZXJib3NlICYmIHN0cmNocihsaWJy YXJ5LCAnLycpID09IE5VTEwpCisgICAgeworICAgICAgdm9pZCAqdGRfaW5p dDsKKworICAgICAgdGRfaW5pdCA9IGRsc3ltIChoYW5kbGUsICJ0ZF9pbml0 Iik7CisgICAgICBpZiAodGRfaW5pdCAhPSBOVUxMKQorICAgICAgICB7Cisg ICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlicGF0aCA9IGRsYWRkcl90 b19zb25hbWUgKHRkX2luaXQpOworCisgICAgICAgICAgaWYgKGxpYnBhdGgg IT0gTlVMTCkKKyAgICAgICAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJI b3N0ICVzIHJlc29sdmVkIHRvOiAlcy5cbiIpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnJhcnksIGxpYnBhdGgpOworICAgICAgICB9 CisgICAgfQorCisgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWRfMSAoaGFuZGxl KSkKKyAgICByZXR1cm4gMTsKKworICAvKiBUaGlzIGxpYnJhcnkgInJlZnVz ZWQiIHRvIHdvcmsgb24gY3VycmVudCBpbmZlcmlvci4gICovCisgIGRsY2xv c2UgKGhhbmRsZSk7CisgIHJldHVybiAwOworfQorCisKKy8qIFNlYXJjaCBs aWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggZm9yIGxpYnRocmVhZF9kYiB3aGlj aCAiYWdyZWVzIgorICAgdG8gd29yayBvbiBjdXJyZW50IGluZmVyaW9yLiAg Ki8KKworc3RhdGljIGludAordGhyZWFkX2RiX2xvYWRfc2VhcmNoICgpCit7 CisgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgIGNvbnN0IGNoYXIgKnNlYXJj aF9wYXRoID0gbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoOworICBpbnQgcmMg PSAwOworCisgIHdoaWxlICgqc2VhcmNoX3BhdGgpCisgICAgeworICAgICAg Y29uc3QgY2hhciAqZW5kID0gc3RyY2hyIChzZWFyY2hfcGF0aCwgJzonKTsK KyAgICAgIGlmIChlbmQpCisJeworCSAgc2l6ZV90IGxlbiA9IGVuZCAtIHNl YXJjaF9wYXRoOworICAgICAgICAgIGlmIChsZW4gKyAxICsgc3RybGVuIChM SUJUSFJFQURfREJfU08pICsgMSA+IHNpemVvZiAocGF0aCkpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGNoYXIgKmNwID0geG1hbGxvYyAobGVu ICsgMSk7CisgICAgICAgICAgICAgIG1lbWNweSAoY3AsIHNlYXJjaF9wYXRo LCBsZW4pOworICAgICAgICAgICAgICBjcFtsZW5dID0gJ1wwJzsKKyAgICAg ICAgICAgICAgd2FybmluZyAoXygibGlidGhyZWFkX2RiX3NlYXJjaF9wYXRo IGNvbXBvbmVudCB0b28gbG9uZywiCisgICAgICAgICAgICAgICAgICAgICAg ICAgIiBpZ25vcmVkOiAlcy4iKSwgY3ApOworICAgICAgICAgICAgICB4ZnJl ZSAoY3ApOworICAgICAgICAgICAgICBzZWFyY2hfcGF0aCArPSBsZW4gKyAx OworICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwkg IG1lbWNweSAocGF0aCwgc2VhcmNoX3BhdGgsIGxlbik7CisJICBwYXRoW2xl bl0gPSAnXDAnOworCSAgc2VhcmNoX3BhdGggKz0gbGVuICsgMTsKKwl9Cisg ICAgICBlbHNlCisJeworICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4g KHNlYXJjaF9wYXRoKTsKKworICAgICAgICAgIGlmIChsZW4gKyAxICsgc3Ry bGVuIChMSUJUSFJFQURfREJfU08pICsgMSA+IHNpemVvZiAocGF0aCkpCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgIHdhcm5pbmcgKF8oImxpYnRo cmVhZF9kYl9zZWFyY2hfcGF0aCBjb21wb25lbnQgdG9vIGxvbmcsIgorICAg ICAgICAgICAgICAgICAgICAgICAgICIgaWdub3JlZDogJXMuIiksIHNlYXJj aF9wYXRoKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9 CisJICBtZW1jcHkgKHBhdGgsIHNlYXJjaF9wYXRoLCBsZW4gKyAxKTsKKwkg IHNlYXJjaF9wYXRoICs9IGxlbjsKKwl9CisgICAgICBzdHJjYXQgKHBhdGgs ICIvIik7CisgICAgICBzdHJjYXQgKHBhdGgsIExJQlRIUkVBRF9EQl9TTyk7 CisgICAgICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKSkKKwl7CisJ ICByYyA9IDE7CisJICBicmVhazsKKwl9CisgICAgfQorICBpZiAocmMgPT0g MCkKKyAgICByYyA9IHRyeV90aHJlYWRfZGJfbG9hZCAoTElCVEhSRUFEX0RC X1NPKTsKKyAgaWYgKHJjID09IDApCisgICAgd2FybmluZyAoXygiVW5hYmxl IHRvIGZpbmQgbGlidGhyZWFkX2RiIG1hdGNoaW5nIGluZmVyaW9yJ3MgdGhy ZWFkIgorICAgICAgICAgICAgICAgIiBsaWJyYXJ5LCB0aHJlYWQgZGVidWdn aW5nIHdpbGwgbm90IGJlIGF2YWlsYWJsZS4iKSk7CisgIHJldHVybiByYzsK K30KKworLyogQXR0ZW1wdCB0byBsb2FkIGFuZCBpbml0aWFsaXplIGxpYnRo cmVhZF9kYi4KKyAgIFJldHVybiAxIG9uIHN1Y2Nlc3MuCisgKi8KKworc3Rh dGljIGludAordGhyZWFkX2RiX2xvYWQgKHZvaWQpCit7CisgIGNvbnN0IGNo YXIgKnNvbmFtZTsKKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwor CisgIGlmICh0aHJlYWRfZGJfaGFuZGxlICE9IE5VTEwpCisgICAgcmV0dXJu IDE7CisKKyAgLyogRG9uJ3QgYXR0ZW1wdCB0byB1c2UgdGhyZWFkX2RiIG9u IHRhcmdldHMgd2hpY2ggY2FuIG5vdCBydW4KKyAgICAgKGV4ZWN1dGFibGVz IG5vdCBydW5uaW5nIHlldCwgY29yZSBmaWxlcykgZm9yIG5vdy4gICovCisg IGlmICghdGFyZ2V0X2hhc19leGVjdXRpb24pCisgICAgcmV0dXJuIDA7CisK KyAgLyogRG9uJ3QgYXR0ZW1wdCB0byB1c2UgdGhyZWFkX2RiIGZvciByZW1v dGUgdGFyZ2V0cy4gICovCisgIGlmICghdGFyZ2V0X2Nhbl9ydW4gKCZjdXJy ZW50X3RhcmdldCkpCisgICAgcmV0dXJuIDA7CisKKyAgbXN5bSA9IGxvb2t1 cF9taW5pbWFsX3N5bWJvbCAoIm5wdGxfdmVyc2lvbiIsIE5VTEwsIE5VTEwp OworICBpZiAoIW1zeW0pCisgICAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5 bWJvbCAoIl9fbGludXh0aHJlYWRzX3ZlcnNpb24iLCBOVUxMLCBOVUxMKTsK KworICAvKiBTb21lIHJlYWxseSBvbGQgbGlicHRocmVhZCB2ZXJzaW9ucyBk byBub3QgaGF2ZSBlaXRoZXIgb2YgdGhlIGFib3ZlLiAgKi8KKyAgaWYgKCFt c3ltKQorICAgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKCJfX3B0 aHJlYWRfdGhyZWFkc19ldmVudHMiLCBOVUxMLCBOVUxMKTsKKworICBpZiAo IW1zeW0pCisgICAgLyogTm8gdGhyZWFkcyB5ZXQgKi8KKyAgICByZXR1cm4g MDsKKworICBzb25hbWUgPSBzb2xpYl9uYW1lX2Zyb21fYWRkcmVzcyAoU1lN Qk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pKTsKKyAgaWYgKHNvbmFtZSkKKyAg ICB7CisgICAgICAvKiBBdHRlbXB0IHRvIGxvYWQgbGlidGhyZWFkX2RiIGZy b20gdGhlIHNhbWUgZGlyZWN0b3J5LiAqLworICAgICAgY2hhciBwYXRoW1BB VEhfTUFYXSwgKmNwOworICAgICAgc3RyY3B5IChwYXRoLCBzb25hbWUpOwor ICAgICAgY3AgPSBzdHJyY2hyIChwYXRoLCAnLycpOworICAgICAgaWYgKGNw ID09IE5VTEwpCisJeworCSAgLyogRXhwZWN0ZWQgdG8gZ2V0IGZ1bGx5IHJl c29sdmVkIHBhdGhuYW1lIGZvciBsaWJwdGhyZWFkLAorICAgICAgICAgICAg IGJ1dCBnb3Qgc29tZXRoaW5nIGVsc2UuICBTZWFyY2ggZm9yIG1hdGNoaW5n IGxpYnRocmVhZF9kYiBhbmQKKyAgICAgICAgICAgICBob3BlIHRoZXJlIGlz IG9uZSB0aGF0IG1hdGNoZXMgY3VycmVudCBsaWJwdGhyZWFkLiAgKi8KKwkg IHdhcm5pbmcgKF8oIkNhbm5vdCBvYnRhaW4gYWJzb2x1dGUgcGF0aCBvZiB0 aHJlYWQgbGlicmFyeTogJXMuIiksCisgICAgICAgICAgICAgICAgICAgc29u YW1lKTsKKwkgIHJldHVybiB0aHJlYWRfZGJfbG9hZF9zZWFyY2ggKCk7CisJ fQorICAgICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7Cisg ICAgICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKSkKKwlyZXR1cm4g MTsKKyAgICB9CisgIHJldHVybiB0aHJlYWRfZGJfbG9hZF9zZWFyY2ggKCk7 Cit9CisKIHN0YXRpYyB2b2lkCiBkaXNhYmxlX3RocmVhZF9ldmVudF9yZXBv cnRpbmcgKHZvaWQpCiB7CkBAIC01OTMsNzUgKzc5OSwzNCBAQCB2b2lkCiBj aGVja19mb3JfdGhyZWFkX2RiICh2b2lkKQogewogICB0ZF9lcnJfZSBlcnI7 Ci0gIHN0YXRpYyBpbnQgYWxyZWFkeV9sb2FkZWQ7CisgIHN0YXRpYyB2b2lk ICpsYXN0X2xvYWRlZDsKIAogICAvKiBEbyBub3RoaW5nIGlmIHdlIGNvdWxk bid0IGxvYWQgbGlidGhyZWFkX2RiLnNvLjEuICAqLwotICBpZiAodGRfdGFf bmV3X3AgPT0gTlVMTCkKKyAgaWYgKCF0aHJlYWRfZGJfbG9hZCAoKSkKICAg ICByZXR1cm47CiAKICAgLyogRmlyc3QgdGltZSB0aHJvdWdoLCByZXBvcnQg dGhhdCBsaWJ0aHJlYWRfZGIgd2FzIHN1Y2Nlc3NmdWx5CiAgICAgIGxvYWRl ZC4gIENhbid0IHByaW50IHRoaXMgaW4gaW4gdGhyZWFkX2RiX2xvYWQgYXMs IGF0IHRoYXQgc3RhZ2UsCi0gICAgIHRoZSBpbnRlcnByZXRlciBhbmQgaXQn cyBjb25zb2xlIGhhdmVuJ3Qgc3RhcnRlZC4gICovCisgICAgIHRoZSBpbnRl cnByZXRlciBhbmQgaXQncyBjb25zb2xlIGhhdmVuJ3Qgc3RhcnRlZC4KKyAg ICAgV2UgdHJhY2sgdGRfdGFfbmV3X3AgYmVjYXVzZSB0aGUgdXNlciBtYXkg c3dpdGNoIGV4ZWN1dGFibGVzLAorICAgICBhbmQgYXMgYSByZXN1bHQgd2Ug bWF5IGRlY2lkZSB0byB1c2UgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZgorICAg ICBsaWJ0aHJlYWRfZGIuICovCiAKLSAgaWYgKCFhbHJlYWR5X2xvYWRlZCkK KyAgaWYgKGxhc3RfbG9hZGVkICE9IHRkX3RhX25ld19wKQogICAgIHsKLSAg ICAgIERsX2luZm8gaW5mbzsKLSAgICAgIGNvbnN0IGNoYXIgKmxpYnJhcnkg PSBOVUxMOwotICAgICAgaWYgKGRsYWRkciAoKCp0ZF90YV9uZXdfcCksICZp bmZvKSAhPSAwKQotCWxpYnJhcnkgPSBpbmZvLmRsaV9mbmFtZTsKKyAgICAg IGxhc3RfbG9hZGVkID0gdGRfdGFfbmV3X3A7CiAKLSAgICAgIC8qIFRyeSBk bGluZm8/ICAqLwotCi0gICAgICBpZiAobGlicmFyeSA9PSBOVUxMKQotCS8q IFBhcmFub2lkIC0gZG9uJ3QgbGV0IGEgTlVMTCBwYXRoIHNsaXAgdGhyb3Vn aC4gICovCi0JbGlicmFyeSA9IExJQlRIUkVBRF9EQl9TTzsKLQotICAgICAg aWYgKGluZm9fdmVyYm9zZSkKLQlwcmludGZfdW5maWx0ZXJlZCAoXygiVXNp bmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGlicmFyeSBcIiVzXCIuXG4iKSwKLQkJ CSAgIGxpYnJhcnkpOwotICAgICAgYWxyZWFkeV9sb2FkZWQgPSAxOwotICAg IH0KLQotICBpZiAodXNpbmdfdGhyZWFkX2RiKQotICAgIC8qIE5vdGhpbmcg dG8gZG8uICBUaGUgdGhyZWFkIGxpYnJhcnkgd2FzIGFscmVhZHkgZGV0ZWN0 ZWQgYW5kIHRoZQotICAgICAgIHRhcmdldCB2ZWN0b3Igd2FzIGFscmVhZHkg YWN0aXZhdGVkLiAgKi8KLSAgICByZXR1cm47Ci0KLSAgLyogRG9uJ3QgYXR0 ZW1wdCB0byB1c2UgdGhyZWFkX2RiIG9uIHRhcmdldHMgd2hpY2ggY2FuIG5v dCBydW4KLSAgICAgKGV4ZWN1dGFibGVzIG5vdCBydW5uaW5nIHlldCwgY29y ZSBmaWxlcykgZm9yIG5vdy4gICovCi0gIGlmICghdGFyZ2V0X2hhc19leGVj dXRpb24pCi0gICAgcmV0dXJuOwotCi0gIC8qIERvbid0IGF0dGVtcHQgdG8g dXNlIHRocmVhZF9kYiBmb3IgcmVtb3RlIHRhcmdldHMuICAqLwotICBpZiAo IXRhcmdldF9jYW5fcnVuICgmY3VycmVudF90YXJnZXQpKQotICAgIHJldHVy bjsKLQotICAvKiBJbml0aWFsaXplIHRoZSBzdHJ1Y3R1cmUgdGhhdCBpZGVu dGlmaWVzIHRoZSBjaGlsZCBwcm9jZXNzLiAgKi8KLSAgcHJvY19oYW5kbGUu cHRpZCA9IGluZmVyaW9yX3B0aWQ7Ci0KLSAgLyogTm93IGF0dGVtcHQgdG8g b3BlbiBhIGNvbm5lY3Rpb24gdG8gdGhlIHRocmVhZCBsaWJyYXJ5LiAgKi8K LSAgZXJyID0gdGRfdGFfbmV3X3AgKCZwcm9jX2hhbmRsZSwgJnRocmVhZF9h Z2VudCk7Ci0gIHN3aXRjaCAoZXJyKQotICAgIHsKLSAgICBjYXNlIFREX05P TElCVEhSRUFEOgotICAgICAgLyogTm8gdGhyZWFkIGxpYnJhcnkgd2FzIGRl dGVjdGVkLiAgKi8KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBURF9PSzoK LSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJbVGhyZWFkIGRlYnVnZ2lu ZyB1c2luZyBsaWJ0aHJlYWRfZGIgZW5hYmxlZF1cbiIpKTsKLQotICAgICAg LyogVGhlIHRocmVhZCBsaWJyYXJ5IHdhcyBkZXRlY3RlZC4gIEFjdGl2YXRl IHRoZSB0aHJlYWRfZGIgdGFyZ2V0LiAgKi8KLSAgICAgIHB1c2hfdGFyZ2V0 ICgmdGhyZWFkX2RiX29wcyk7Ci0gICAgICB1c2luZ190aHJlYWRfZGIgPSAx OwotCi0gICAgICBlbmFibGVfdGhyZWFkX2V2ZW50X3JlcG9ydGluZyAoKTsK LSAgICAgIHRocmVhZF9kYl9maW5kX25ld190aHJlYWRzXzEgKCk7Ci0gICAg ICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICB3YXJuaW5nIChfKCJD YW5ub3QgaW5pdGlhbGl6ZSB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnk6ICVz IiksCi0JICAgICAgIHRocmVhZF9kYl9lcnJfc3RyIChlcnIpKTsKLSAgICAg IGJyZWFrOworICAgICAgaWYgKGluZm9fdmVyYm9zZSB8fCAqbGlidGhyZWFk X2RiX3NlYXJjaF9wYXRoKQorICAgICAgICB7CisgICAgICAgICAgY29uc3Qg Y2hhciAqbGlicmFyeTsKKworICAgICAgICAgIGxpYnJhcnkgPSBkbGFkZHJf dG9fc29uYW1lICgqdGRfdGFfbmV3X3ApOworICAgICAgICAgIGlmIChsaWJy YXJ5ID09IE5VTEwpCisgICAgICAgICAgICBsaWJyYXJ5ID0gTElCVEhSRUFE X0RCX1NPOworCisgICAgICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlVz aW5nIGhvc3QgbGlidGhyZWFkX2RiIGxpYnJhcnkgXCIlc1wiLlxuIiksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkpOworICAgICAg ICB9CiAgICAgfQogfQogCkBAIC03ODMsNyArOTQ4LDkgQEAgdGhyZWFkX2Ri X2RldGFjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcwogCiAgIC8qIERldGFj aCB0aHJlYWRfZGIgdGFyZ2V0IG9wcy4gICovCiAgIHVucHVzaF90YXJnZXQg KCZ0aHJlYWRfZGJfb3BzKTsKLSAgdXNpbmdfdGhyZWFkX2RiID0gMDsKKyAg aWYgKHRocmVhZF9kYl9oYW5kbGUpCisgICAgZGxjbG9zZSAodGhyZWFkX2Ri X2hhbmRsZSk7CisgIHRocmVhZF9kYl9oYW5kbGUgPSBOVUxMOwogCiAgIHRh cmdldF9iZW5lYXRoLT50b19kZXRhY2ggKHRhcmdldF9iZW5lYXRoLCBhcmdz LCBmcm9tX3R0eSk7CiB9CkBAIC04OTYsNyArMTA2Myw5IEBAIHRocmVhZF9k Yl93YWl0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAogICAgIHsKICAgICAg IHJlbW92ZV90aHJlYWRfZXZlbnRfYnJlYWtwb2ludHMgKCk7CiAgICAgICB1 bnB1c2hfdGFyZ2V0ICgmdGhyZWFkX2RiX29wcyk7Ci0gICAgICB1c2luZ190 aHJlYWRfZGIgPSAwOworICAgICAgaWYgKHRocmVhZF9kYl9oYW5kbGUpCisJ ZGxjbG9zZSAodGhyZWFkX2RiX2hhbmRsZSk7CisgICAgICB0aHJlYWRfZGJf aGFuZGxlID0gTlVMTDsKIAogICAgICAgcmV0dXJuIHB0aWQ7CiAgICAgfQpA QCAtOTQ0LDcgKzExMTMsOSBAQCB0aHJlYWRfZGJfbW91cm5faW5mZXJpb3Ig KHN0cnVjdCB0YXJnZXRfCiAKICAgLyogRGV0YWNoIHRocmVhZF9kYiB0YXJn ZXQgb3BzLiAgKi8KICAgdW5wdXNoX3RhcmdldCAob3BzKTsKLSAgdXNpbmdf dGhyZWFkX2RiID0gMDsKKyAgaWYgKHRocmVhZF9kYl9oYW5kbGUpCisgICAg ZGxjbG9zZSAodGhyZWFkX2RiX2hhbmRsZSk7CisgIHRocmVhZF9kYl9oYW5k bGUgPSBOVUxMOwogfQogCiBzdGF0aWMgaW50CkBAIC0xMTg3LDEzICsxMzU4 LDI4IEBAIGV4dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5cGUgX2luaXRpYWxp emUKIHZvaWQKIF9pbml0aWFsaXplX3RocmVhZF9kYiAodm9pZCkKIHsKLSAg LyogT25seSBpbml0aWFsaXplIHRoZSBtb2R1bGUgaWYgd2UgY2FuIGxvYWQg bGlidGhyZWFkX2RiLiAgKi8KLSAgaWYgKHRocmVhZF9kYl9sb2FkICgpKQot ICAgIHsKLSAgICAgIGluaXRfdGhyZWFkX2RiX29wcyAoKTsKLSAgICAgIGFk ZF90YXJnZXQgKCZ0aHJlYWRfZGJfb3BzKTsKKyAgaW5pdF90aHJlYWRfZGJf b3BzICgpOworICBhZGRfdGFyZ2V0ICgmdGhyZWFkX2RiX29wcyk7CiAKLSAg ICAgIC8qIEFkZCBvdXJzZWx2ZXMgdG8gb2JqZmlsZSBldmVudCBjaGFpbi4g ICovCi0gICAgICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKHRocmVh ZF9kYl9uZXdfb2JqZmlsZSk7Ci0gICAgfQorICAvKiBEZWZlciBsb2FkaW5n IG9mIGxpYnRocmVhZF9kYi5zbyB1bnRpbCBpbmZlcmlvciBpcyBydW5uaW5n LgorICAgICBUaGlzIGFsbG93cyBnZGIgdG8gbG9hZCBjb3JyZWN0IGxpYnRo cmVhZF9kYiBmb3IgYSBnaXZlbgorICAgICBleGVjdXRhYmxlIC0tIHRoZXJl IGNvdWxkIGJlIG11dGlwbGUgdmVyc2lvbnMgb2YgZ2xpYmMsCisgICAgIGNv bXBpbGVkIHdpdGggTGludXhUaHJlYWRzIG9yIE5QVEwsIGFuZCB1bnRpbCB0 aGVyZSBpcworICAgICBhIHJ1bm5pbmcgaW5mZXJpb3IsIHdlIGNhbid0IHRl bGwgd2hpY2ggbGlidGhyZWFkX2RiIGlzCisgICAgIHRoZSBjb3JyZWN0IG9u ZSB0byBsb2FkLiAqLworCisgIGxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aCA9 IHhzdHJkdXAoTElCVEhSRUFEX0RCX1NFQVJDSF9QQVRIKTsKKworICBhZGRf c2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGgiLAorCQkJCSAgICAgY2xhc3Nfc3VwcG9ydCwKKwkJCQkg ICAgICZsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGgsIF8oIlwKK1NldCBzZWFy Y2ggcGF0aCBmb3IgbGlidGhyZWFkX2RiLiIpLCBfKCJcCitTaG93IHRoZSBj dXJyZW50IHNlYXJjaCBwYXRoIG9yIGxpYnRocmVhZF9kYi4iKSwgXygiXAor VGhpcyBwYXRoIGlzIHVzZWQgdG8gc2VhcmNoIGZvciBsaWJ0aHJlYWRfZGIg dG8gYmUgbG9hZGVkIGludG8gXAorZ2RiIGl0c2VsZi4iKSwKKwkJCSAgICBO VUxMLAorCQkJICAgIE5VTEwsCisJCQkgICAgJnNldGxpc3QsICZzaG93bGlz dCk7CisgIC8qIEFkZCBvdXJzZWx2ZXMgdG8gb2JqZmlsZSBldmVudCBjaGFp bi4gICovCisgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhyZWFk X2RiX25ld19vYmpmaWxlKTsKIH0KSW5kZXg6IGRvYy9nZGIudGV4aW5mbwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMv Z2RiL2RvYy9nZGIudGV4aW5mbyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41 ODAKZGlmZiAtdSAtcCAtdSAtcjEuNTgwIGdkYi50ZXhpbmZvCi0tLSBkb2Mv Z2RiLnRleGluZm8JMTUgQXByIDIwMDkgMjI6MjA6MzIgLTAwMDAJMS41ODAK KysrIGRvYy9nZGIudGV4aW5mbwkxNyBBcHIgMjAwOSAxODoyNzo0NCAtMDAw MApAQCAtMjQyOSw2ICsyNDI5LDkgQEAgYSBjb21tYW5kIHRvIGFwcGx5IGEg Y29tbWFuZCB0byBhIGxpc3QgbwogQGl0ZW0gdGhyZWFkLXNwZWNpZmljIGJy ZWFrcG9pbnRzCiBAaXRlbSBAc2FtcHtzZXQgcHJpbnQgdGhyZWFkLWV2ZW50 c30sIHdoaWNoIGNvbnRyb2xzIHByaW50aW5nIG9mIAogbWVzc2FnZXMgb24g dGhyZWFkIHN0YXJ0IGFuZCBleGl0LgorQGl0ZW0gQHNhbXB7c2V0IGxpYnRo cmVhZC1kYi1zZWFyY2gtcGF0aCBAdmFye3BhdGh9fSwgd2hpY2ggbGV0cwor dGhlIHVzZXIgc3BlY2lmeSB3aGljaCBAY29kZXtsaWJ0aHJlYWRfZGJ9IHRv IHVzZSBpZiB0aGUgZGVmYXVsdCBjaG9pY2UKK2lzbid0IGNvbXBhdGlibGUg d2l0aCB0aGUgcHJvZ3JhbS4KIEBlbmQgaXRlbWl6ZQogCiBAcXVvdGF0aW9u CkBAIC0yNjQ3LDYgKzI2NTAsMzkgQEAgcHJvZ3JhbXMgd2l0aCBtdWx0aXBs ZSB0aHJlYWRzLgogQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5nIFdh dGNocG9pbnRzfSwgZm9yIGluZm9ybWF0aW9uIGFib3V0CiB3YXRjaHBvaW50 cyBpbiBwcm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCiAKK0B0YWJs ZSBAY29kZQorQGtpbmRleCBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRo CitAaXRlbSBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoIEBye1t9QHZh cntwYXRofUBye119CitJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCwgQHZhcntw YXRofSBpcyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mCitkaXJlY3Rvcmll cyBAdmFsdWV7R0RCTn0gd2lsbCB1c2UgdG8gc2VhcmNoIGZvciBAY29kZXts aWJ0aHJlYWRfZGJ9LgorSWYgeW91IG9taXQgQHZhcntwYXRofSwgQHNhbXB7 bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofSB3aWxsIGJlIHJlc2V0IHRvCitl bXB0eSBsaXN0LgorCitPbiBAc2N7Z251fS9MaW51eCBhbmQgU29sYXJpcyBz eXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKK0Bjb2Rl e2xpYnRocmVhZF9kYn0gbGlicmFyeSB0byBvYnRhaW4gaW5mb3JtYXRpb24g YWJvdXQgdGhyZWFkcyBpbiB0aGUKK2luZmVyaW9yIHByb2Nlc3MuICBAdmFs dWV7R0RCTn0gZmlyc3QgYXR0ZW1wdHMgdG8gdXNlCitAY29kZXtsaWJ0aHJl YWRfZGJ9IGxvY2F0ZWQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBmcm9tIHdo aWNoCitAY29kZXtsaWJwdGhyZWFkfSB3YXMgbG9hZGVkIGluIHRoZSBpbmZl cmlvciBwcm9jZXNzLiAgSWYgdGhhdCBmYWlscywKK0B2YWx1ZXtHREJOfSB3 aWxsIHVzZSBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9LAorYW5k IHRoZW4gZGVmYXVsdCBzeXN0ZW0gc2hhcmVkIGxpYnJhcnkgZGlyZWN0b3Jp ZXMsIHRvIGZpbmQKK0Bjb2Rle2xpYnRocmVhZF9kYn0uCisKK0ZvciBhbnkg QGNvZGV7bGlidGhyZWFkX2RifSBsaWJyYXJ5IEB2YWx1ZXtHREJOfSBmaW5k cyBpbiBhYm92ZSBkaXJlY3RvcmllcywKK0B2YWx1ZXtHREJOfSBhdHRlbXB0 cyB0byBpbml0aWFsaXplIGl0IHdpdGggdGhlIGN1cnJlbnQgaW5mZXJpb3Ig cHJvY2Vzcy4KK0lmIHRoaXMgaW5pdGlhbGl6YXRpb24gZmFpbHMgKHdoaWNo IGNvdWxkIGhhcHBlbiBiZWNhdXNlIG9mIGEgdmVyc2lvbgorbWlzbWF0Y2gg YmV0d2VlbiBAY29kZXtsaWJ0aHJlYWRfZGJ9IGFuZCBAY29kZXtsaWJwdGhy ZWFkfSksIEB2YWx1ZXtHREJOfQord2lsbCB1bmxvYWQgQGNvZGV7bGlidGhy ZWFkX2RifSwgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgZGlyZWN0b3J5 LgorSWYgbm9uZSBvZiBAY29kZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcmllcyBp bml0aWFsaXplIHN1Y2Nlc3NmdWxseSwKK3RocmVhZCBkZWJ1Z2dpbmcgd2ls bCBiZSBkaXNhYmxlZC4KKworU2V0dGluZyBAY29kZXtsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGh9IGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZAorb25seSBm b3IgQHNje2dudX0vTGludXggdGFyZ2V0cy4KKworQGtpbmRleCBzaG93IGxp YnRocmVhZC1kYi1zZWFyY2gtcGF0aCAKK0BpdGVtIHNob3cgbGlidGhyZWFk LWRiLXNlYXJjaC1wYXRoIAorRGlzcGxheSBjdXJyZW50IGxpYnRocmVhZF9k YiBzZWFyY2ggcGF0aC4KK0BlbmQgdGFibGUKKwogQG5vZGUgUHJvY2Vzc2Vz CiBAc2VjdGlvbiBEZWJ1Z2dpbmcgUHJvZ3JhbXMgd2l0aCBNdWx0aXBsZSBQ cm9jZXNzZXMKIAo= --0015175cde4296cab50467c4f889--