From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13026 invoked by alias); 2 Sep 2009 16:43:58 -0000 Received: (qmail 13009 invoked by uid 22791); 2 Sep 2009 16:43:53 -0000 X-SWARE-Spam-Status: No, hits=-0.7 required=5.0 tests=AWL,BAYES_00,HK_OBFDOM,J_CHICKENPOX_37,J_CHICKENPOX_91,J_CHICKENPOX_92,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; Wed, 02 Sep 2009 16:43:41 +0000 Received: from spaceape24.eur.corp.google.com (spaceape24.eur.corp.google.com [172.28.16.76]) by smtp-out.google.com with ESMTP id n82Ghc0H003301 for ; Wed, 2 Sep 2009 09:43:38 -0700 Received: from ywh5 (ywh5.prod.google.com [10.192.8.5]) by spaceape24.eur.corp.google.com with ESMTP id n82GgIJf009567 for ; Wed, 2 Sep 2009 09:43:35 -0700 Received: by ywh5 with SMTP id 5so2156467ywh.13 for ; Wed, 02 Sep 2009 09:43:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.101.96.20 with SMTP id y20mr9550318anl.93.1251909814760; Wed, 02 Sep 2009 09:43:34 -0700 (PDT) In-Reply-To: <20090902163344.833F476568@localhost> References: <20090902163344.833F476568@localhost> Date: Wed, 02 Sep 2009 16:43:00 -0000 Message-ID: <8ac60eac0909020943g1ecbf6ddo841471afb983ac88@mail.gmail.com> Subject: Re: [patch] Allow gdbserver to dynamically lookup libthread_db.so.1 From: Paul Pluzhnikov To: gdb-patches@sourceware.org Cc: ppluzhnikov@google.com, dje@google.com Content-Type: multipart/mixed; boundary=001636ed6f5dccb50804729af714 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-09/txt/msg00058.txt.bz2 --001636ed6f5dccb50804729af714 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1274 On Wed, Sep 2, 2009 at 9:33 AM, Paul Pluzhnikov wro= te: > + =A0CHK(td_ta_new_p =3D dlsym (handle, "td_ta_new")); Just noticed 'space before paren' violation :( Sorry about that. Fix attached. --=20 Paul Pluzhnikov doc/ 2009-09-02 Paul Pluzhnikov * gdb.texinfo (Server): Document libthread-db-search-path. gdbserver/ 2009-09-02 Paul Pluzhnikov * acinclude.m4: Link with libdl. * server.c (libthread_db_search_path): New variable. (handle_query): Set it. * thread-db.c (td_ta_new_p, td_ta_event_getmsg_p) (td_ta_set_event_p, td_ta_event_addr_p, td_ta_map_lwp2thr_p) (td_thr_get_info_p, td_thr_event_enable_p, td_ta_thr_iter_p) (td_thr_tls_get_addr_p, td_symbol_list_p) (td_symbol_list_p): New variables. (thread_db_create_event, thread_db_enable_reporting) (find_one_thread, maybe_attach_thread, thread_db_find_new_threads) (thread_db_get_tls_address): Ajust. (try_thread_db_load_1, dladdr_to_soname): New functions. (try_thread_db_load, thread_db_load_search): New functions. (thread_db_init): Search for libthread_db. * configure.ac: Regenerate. * configure: Likewise. --001636ed6f5dccb50804729af714 Content-Type: text/plain; charset=US-ASCII; name="gdb-gdbserver-threaddb-search-20090902-2.txt" Content-Disposition: attachment; filename="gdb-gdbserver-threaddb-search-20090902-2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fz4aqrq70 Content-length: 29260 SW5kZXg6IGRvYy9nZGIudGV4aW5mbwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2RvYy9nZGIudGV4aW5mbyx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS42MjAKZGlmZiAtdSAtcCAtdSAtcjEu NjIwIGdkYi50ZXhpbmZvCi0tLSBkb2MvZ2RiLnRleGluZm8JMSBTZXAgMjAw OSAxODo0ODo1OCAtMDAwMAkxLjYyMAorKysgZG9jL2dkYi50ZXhpbmZvCTIg U2VwIDIwMDkgMTY6NDA6NDggLTAwMDAKQEAgLTE0NzY3LDYgKzE0NzY3LDEz IEBAIERpc2FibGUgb3IgZW5hYmxlIGdlbmVyYWwgZGVidWdnaW5nIG1lc3MK IERpc2FibGUgb3IgZW5hYmxlIHNwZWNpZmljIGRlYnVnZ2luZyBtZXNzYWdl cyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZQogcHJvdG9jb2wgKEBweHJl ZntSZW1vdGUgUHJvdG9jb2x9KS4KIAorQGl0ZW0gbW9uaXRvciBzZXQgbGli dGhyZWFkLWRiLXNlYXJjaC1wYXRoIFtQQVRIXQorQGNpbmRleCBnZGJzZXJ2 ZXIsIHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9CitXaGVu IHRoaXMgY29tbWFuZCBpcyBpc3N1ZWQsIEB2YXJ7cGF0aH0gaXMgYSBjb2xv bi1zZXBhcmF0ZWQgbGlzdCBvZgorZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZv ciBAY29kZXtsaWJ0aHJlYWRfZGJ9IChAcHhyZWZ7VGhyZWFkcywsc2V0Cits aWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9KS4gIElmIHlvdSBvbWl0IEB2YXJ7 cGF0aH0sCitAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9IHdpbGwg YmUgcmVzZXQgdG8gYW4gZW1wdHkgbGlzdC4KKwogQGl0ZW0gbW9uaXRvciBl eGl0CiBUZWxsIGdkYnNlcnZlciB0byBleGl0IGltbWVkaWF0ZWx5LiAgVGhp cyBjb21tYW5kIHNob3VsZCBiZSBmb2xsb3dlZCBieQogQGNvZGV7ZGlzY29u bmVjdH0gdG8gY2xvc2UgdGhlIGRlYnVnZ2luZyBzZXNzaW9uLiAgQGNvZGV7 Z2Ric2VydmVyfSB3aWxsCkluZGV4OiBnZGJzZXJ2ZXIvYWNpbmNsdWRlLm00 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvZ2Ric2VydmVyL2FjaW5jbHVkZS5tNCx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS43CmRpZmYgLXUgLXAgLXUgLXIxLjcgYWNpbmNsdWRlLm00Ci0t LSBnZGJzZXJ2ZXIvYWNpbmNsdWRlLm00CTUgSnVuIDIwMDggMjI6MzY6NTcg LTAwMDAJMS43CisrKyBnZGJzZXJ2ZXIvYWNpbmNsdWRlLm00CTIgU2VwIDIw MDkgMTY6NDA6NDggLTAwMDAKQEAgLTIyLDcgKzIyLDcgQEAgQUNfREVGVU4o W1NSVl9DSEVDS19USFJFQURfREJdLAogICAgdm9pZCBwc19nZXRfdGhyZWFk X2FyZWEoKSB7fQogICAgdm9pZCBwc19nZXRwaWQoKSB7fV0sCiAgIFt0ZF90 YV9uZXcoKTtdLAotICBbc3J2X2N2X3RocmVhZF9kYj0iLWx0aHJlYWRfZGIi XSwKKyAgW3Nydl9jdl90aHJlYWRfZGI9Ii1sZGwiXSwKICAgW3Nydl9jdl90 aHJlYWRfZGI9bm8KIAogIGlmIHRlc3QgIiRwcmVmaXgiID0gIi91c3IiIHx8 IHRlc3QgIiRwcmVmaXgiID0gIk5PTkUiOyB0aGVuCkluZGV4OiBnZGJzZXJ2 ZXIvc2VydmVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9nZGJzZXJ2ZXIvc2VydmVyLmMsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMTAyCmRpZmYgLXUgLXAgLXUgLXIxLjEwMiBzZXJ2 ZXIuYwotLS0gZ2Ric2VydmVyL3NlcnZlci5jCTMwIEp1biAyMDA5IDE2OjM1 OjI1IC0wMDAwCTEuMTAyCisrKyBnZGJzZXJ2ZXIvc2VydmVyLmMJMiBTZXAg MjAwOSAxNjo0MDo0OCAtMDAwMApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1 ZGUgPG1hbGxvYy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlIDxjdHlwZS5oPgor CiBwdGlkX3QgY29udF90aHJlYWQ7CiBwdGlkX3QgZ2VuZXJhbF90aHJlYWQ7 CiBwdGlkX3Qgc3RlcF90aHJlYWQ7CkBAIC01MSw2ICs1MywxMCBAQCBzdGF0 aWMgY2hhciAqKnByb2dyYW1fYXJndiwgKip3cmFwcGVyX2FyCiAgICB3YXMg b3JpZ2luYWxseSB1c2VkIHRvIGRlYnVnIExpbnV4VGhyZWFkcyBzdXBwb3J0 LiAgKi8KIGludCBkZWJ1Z190aHJlYWRzOwogCisvKiBJZiBub3QgTlVMTCwg YSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBwYXRocyB0byB1c2Ugd2hpbGUg bG9va2luZyBmb3IKKyAgIGxpYnRocmVhZF9kYi4gICovCitjaGFyICpsaWJ0 aHJlYWRfZGJfc2VhcmNoX3BhdGg7CisKIC8qIEVuYWJsZSBkZWJ1Z2dpbmcg b2YgaC93IGJyZWFrcG9pbnQvd2F0Y2hwb2ludCBzdXBwb3J0LiAgKi8KIGlu dCBkZWJ1Z19od19wb2ludHM7CiAKQEAgLTEyNDUsNiArMTI1MSwyMyBAQCBo YW5kbGVfcXVlcnkgKGNoYXIgKm93bl9idWYsIGludCBwYWNrZXRfCiAJbW9u aXRvcl9zaG93X2hlbHAgKCk7CiAgICAgICBlbHNlIGlmIChzdHJjbXAgKG1v biwgImV4aXQiKSA9PSAwKQogCWV4aXRfcmVxdWVzdGVkID0gMTsKKyAgICAg IGVsc2UgaWYgKHN0cm5jbXAgKG1vbiwgInNldCBsaWJ0aHJlYWQtZGItc2Vh cmNoLXBhdGgiLCAyOCkgPT0gMCkKKwl7CisJICBjb25zdCBjaGFyICpjcCA9 IG1vbiArIDI4OworCisJICBpZiAobGlidGhyZWFkX2RiX3NlYXJjaF9wYXRo ICE9IE5VTEwpCisJICAgIGZyZWUgKGxpYnRocmVhZF9kYl9zZWFyY2hfcGF0 aCk7CisKKwkgIC8qIFNraXAgbGVhZGluZyBzcGFjZSAoaWYgYW55KS4gICov CisJICB3aGlsZSAoaXNzcGFjZSAoKmNwKSkKKwkgICAgKytjcDsKKworCSAg bGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoID0geHN0cmR1cCAoY3ApOworCisJ ICBtb25pdG9yX291dHB1dCAoImxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aCBz ZXQgdG8gYCIpOworCSAgbW9uaXRvcl9vdXRwdXQgKGxpYnRocmVhZF9kYl9z ZWFyY2hfcGF0aCk7CisJICBtb25pdG9yX291dHB1dCAoIidcbiIpOworCX0K ICAgICAgIGVsc2UKIAl7CiAJICBtb25pdG9yX291dHB1dCAoIlVua25vd24g bW9uaXRvciBjb21tYW5kLlxuXG4iKTsKSW5kZXg6IGdkYnNlcnZlci90aHJl YWQtZGIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL2dkYnNlcnZlci90aHJlYWQtZGIuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4yMwpkaWZmIC11IC1wIC11IC1yMS4yMyB0aHJlYWQt ZGIuYwotLS0gZ2Ric2VydmVyL3RocmVhZC1kYi5jCTMgQXByIDIwMDkgMjA6 MTU6NTEgLTAwMDAJMS4yMworKysgZ2Ric2VydmVyL3RocmVhZC1kYi5jCTIg U2VwIDIwMDkgMTY6NDA6NDggLTAwMDAKQEAgLTI3LDE3ICsyNyw0MiBAQCBl eHRlcm4gaW50IGRlYnVnX3RocmVhZHM7CiAKIHN0YXRpYyBpbnQgdGhyZWFk X2RiX3VzZV9ldmVudHM7CiAKLSNpZmRlZiBIQVZFX1RIUkVBRF9EQl9ICi0j aW5jbHVkZSA8dGhyZWFkX2RiLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgImdk Yl9wcm9jX3NlcnZpY2UuaCIKKyNpbmNsdWRlICIuLi9nZGJfdGhyZWFkX2Ri LmgiCiAKKyNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGludC5o PgorI2luY2x1ZGUgPGxpbWl0cy5oPgorCitleHRlcm4gY2hhciAqbGlidGhy ZWFkX2RiX3NlYXJjaF9wYXRoOwogCiBzdGF0aWMgaW50IGZpbmRfb25lX3Ro cmVhZCAocHRpZF90KTsKIHN0YXRpYyBpbnQgZmluZF9uZXdfdGhyZWFkc19j YWxsYmFjayAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKnRoX3AsIHZvaWQgKmRh dGEpOwogCitzdGF0aWMgdGRfZXJyX2UgKCp0ZF90YV9uZXdfcCkgKHN0cnVj dCBwc19wcm9jaGFuZGxlICogcHMsCisJCQkJdGRfdGhyYWdlbnRfdCAqKnRh KTsKK3N0YXRpYyB0ZF9lcnJfZSAoKnRkX3RhX2V2ZW50X2dldG1zZ19wKSAo Y29uc3QgdGRfdGhyYWdlbnRfdCAqdGEsCisJCQkJCSB0ZF9ldmVudF9tc2df dCAqbXNnKTsKK3N0YXRpYyB0ZF9lcnJfZSAoKnRkX3RhX3NldF9ldmVudF9w KSAoY29uc3QgdGRfdGhyYWdlbnRfdCAqdGEsCisJCQkJICAgICAgdGRfdGhy X2V2ZW50c190ICpldmVudCk7CitzdGF0aWMgdGRfZXJyX2UgKCp0ZF90YV9l dmVudF9hZGRyX3ApIChjb25zdCB0ZF90aHJhZ2VudF90ICp0YSwKKwkJCQkg ICAgICAgdGRfZXZlbnRfZSBldmVudCwgdGRfbm90aWZ5X3QgKnB0cik7Citz dGF0aWMgdGRfZXJyX2UgKCp0ZF90YV9tYXBfbHdwMnRocl9wKSAoY29uc3Qg dGRfdGhyYWdlbnRfdCAqdGEsCisJCQkJCWx3cGlkX3QgbHdwaWQsIHRkX3Ro cmhhbmRsZV90ICp0aCk7CitzdGF0aWMgdGRfZXJyX2UgKCp0ZF90aHJfZ2V0 X2luZm9fcCkgKGNvbnN0IHRkX3RocmhhbmRsZV90ICp0aCwKKwkJCQkgICAg ICB0ZF90aHJpbmZvX3QgKmluZm9wKTsKK3N0YXRpYyB0ZF9lcnJfZSAoKnRk X3Rocl9ldmVudF9lbmFibGVfcCkgKGNvbnN0IHRkX3RocmhhbmRsZV90ICp0 aCwKKwkJCQkJICBpbnQgZXZlbnQpOworc3RhdGljIHRkX2Vycl9lICgqdGRf dGFfdGhyX2l0ZXJfcCkgKGNvbnN0IHRkX3RocmFnZW50X3QgKnRhLAorCQkJ CSAgICAgdGRfdGhyX2l0ZXJfZiAqY2FsbGJhY2ssIHZvaWQgKmNiZGF0YV9w LAorCQkJCSAgICAgdGRfdGhyX3N0YXRlX2Ugc3RhdGUsIGludCB0aV9wcmks CisJCQkJICAgICBzaWdzZXRfdCAqdGlfc2lnbWFza19wLAorCQkJCSAgICAg dW5zaWduZWQgaW50IHRpX3VzZXJfZmxhZ3MpOworc3RhdGljIHRkX2Vycl9l ICgqdGRfdGhyX3Rsc19nZXRfYWRkcl9wKSAoY29uc3QgdGRfdGhyaGFuZGxl X3QgKnRoLAorCQkJCQkgIHZvaWQgKm1hcF9hZGRyZXNzLAorCQkJCQkgIHNp emVfdCBvZmZzZXQsIHZvaWQgKiphZGRyZXNzKTsKK3N0YXRpYyBjb25zdCBj aGFyICoqICgqdGRfc3ltYm9sX2xpc3RfcCkgKHZvaWQpOworCiBzdGF0aWMg Y29uc3QgY2hhciAqCiB0aHJlYWRfZGJfZXJyX3N0ciAodGRfZXJyX2UgZXJy KQogewpAQCAtMTM5LDcgKzE2NCw3IEBAIHRocmVhZF9kYl9jcmVhdGVfZXZl bnQgKENPUkVfQUREUiB3aGVyZSkKICAgICAgSW4gdGhlIExpbnV4VGhyZWFk cyBpbXBsZW1lbnRhdGlvbiwgdGhpcyBpcyBzYWZlLAogICAgICBiZWNhdXNl IGFsbCBldmVudHMgY29tZSBmcm9tIHRoZSBtYW5hZ2VyIHRocmVhZAogICAg ICAoZXhjZXB0IGZvciBpdHMgb3duIGNyZWF0aW9uLCBvZiBjb3Vyc2UpLiAg Ki8KLSAgZXJyID0gdGRfdGFfZXZlbnRfZ2V0bXNnIChwcm9jLT50aHJlYWRf YWdlbnQsICZtc2cpOworICBlcnIgPSB0ZF90YV9ldmVudF9nZXRtc2dfcCAo cHJvYy0+dGhyZWFkX2FnZW50LCAmbXNnKTsKICAgaWYgKGVyciAhPSBURF9P SykKICAgICBmcHJpbnRmIChzdGRlcnIsICJ0aHJlYWQgZ2V0bXNnIGVycjog JXNcbiIsCiAJICAgICB0aHJlYWRfZGJfZXJyX3N0ciAoZXJyKSk7CkBAIC0x ODcsNyArMjEyLDcgQEAgdGhyZWFkX2RiX2VuYWJsZV9yZXBvcnRpbmcgKCkK ICAgdGRfZXZlbnRfYWRkc2V0ICgmZXZlbnRzLCBURF9ERUFUSCk7CiAjZW5k aWYKIAotICBlcnIgPSB0ZF90YV9zZXRfZXZlbnQgKHByb2MtPnRocmVhZF9h Z2VudCwgJmV2ZW50cyk7CisgIGVyciA9IHRkX3RhX3NldF9ldmVudF9wIChw cm9jLT50aHJlYWRfYWdlbnQsICZldmVudHMpOwogICBpZiAoZXJyICE9IFRE X09LKQogICAgIHsKICAgICAgIHdhcm5pbmcgKCJVbmFibGUgdG8gc2V0IGds b2JhbCB0aHJlYWQgZXZlbnQgbWFzazogJXMiLApAQCAtMTk2LDcgKzIyMSw3 IEBAIHRocmVhZF9kYl9lbmFibGVfcmVwb3J0aW5nICgpCiAgICAgfQogCiAg IC8qIEdldCBhZGRyZXNzIGZvciB0aHJlYWQgY3JlYXRpb24gYnJlYWtwb2lu dC4gICovCi0gIGVyciA9IHRkX3RhX2V2ZW50X2FkZHIgKHByb2MtPnRocmVh ZF9hZ2VudCwgVERfQ1JFQVRFLCAmbm90aWZ5KTsKKyAgZXJyID0gdGRfdGFf ZXZlbnRfYWRkcl9wIChwcm9jLT50aHJlYWRfYWdlbnQsIFREX0NSRUFURSwg Jm5vdGlmeSk7CiAgIGlmIChlcnIgIT0gVERfT0spCiAgICAgewogICAgICAg d2FybmluZyAoIlVuYWJsZSB0byBnZXQgbG9jYXRpb24gZm9yIHRocmVhZCBj cmVhdGlvbiBicmVha3BvaW50OiAlcyIsCkBAIC0yMTEsNyArMjM2LDcgQEAg dGhyZWFkX2RiX2VuYWJsZV9yZXBvcnRpbmcgKCkKICAgICAgd2l0aCBhY3R1 YWwgdGhyZWFkIGRlYXRocyAodmlhIHdhaXQpLiAgKi8KIAogICAvKiBHZXQg YWRkcmVzcyBmb3IgdGhyZWFkIGRlYXRoIGJyZWFrcG9pbnQuICAqLwotICBl cnIgPSB0ZF90YV9ldmVudF9hZGRyIChwcm9jLT50aHJlYWRfYWdlbnQsIFRE X0RFQVRILCAmbm90aWZ5KTsKKyAgZXJyID0gdGRfdGFfZXZlbnRfYWRkcl9w IChwcm9jLT50aHJlYWRfYWdlbnQsIFREX0RFQVRILCAmbm90aWZ5KTsKICAg aWYgKGVyciAhPSBURF9PSykKICAgICB7CiAgICAgICB3YXJuaW5nICgiVW5h YmxlIHRvIGdldCBsb2NhdGlvbiBmb3IgdGhyZWFkIGRlYXRoIGJyZWFrcG9p bnQ6ICVzIiwKQEAgLTIzMyw3ICsyNTgsNyBAQCBmaW5kX29uZV90aHJlYWQg KHB0aWRfdCBwdGlkKQogICB0ZF9lcnJfZSBlcnI7CiAgIHN0cnVjdCB0aHJl YWRfaW5mbyAqaW5mZXJpb3I7CiAgIHN0cnVjdCBsd3BfaW5mbyAqbHdwOwot ICBzdHJ1Y3QgcHJvY2Vzc19pbmZvX3ByaXZhdGUgKnByb2M7CisgIHN0cnVj dCBwcm9jZXNzX2luZm9fcHJpdmF0ZSAqcHJvYyA9IGN1cnJlbnRfcHJvY2Vz cygpLT5wcml2YXRlOwogICBpbnQgbHdwaWQgPSBwdGlkX2dldF9sd3AgKHB0 aWQpOwogCiAgIGluZmVyaW9yID0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSBm aW5kX2luZmVyaW9yX2lkICgmYWxsX3RocmVhZHMsIHB0aWQpOwpAQCAtMjQy LDEzICsyNjcsMTIgQEAgZmluZF9vbmVfdGhyZWFkIChwdGlkX3QgcHRpZCkK ICAgICByZXR1cm4gMTsKIAogICAvKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQg dGhpcyB0aHJlYWQuICAqLwotICBwcm9jID0gZ2V0X3RocmVhZF9wcm9jZXNz IChpbmZlcmlvciktPnByaXZhdGU7Ci0gIGVyciA9IHRkX3RhX21hcF9sd3Ay dGhyIChwcm9jLT50aHJlYWRfYWdlbnQsIGx3cGlkLCAmdGgpOworICBlcnIg PSB0ZF90YV9tYXBfbHdwMnRocl9wIChwcm9jLT50aHJlYWRfYWdlbnQsIGx3 cGlkLCAmdGgpOwogICBpZiAoZXJyICE9IFREX09LKQogICAgIGVycm9yICgi Q2Fubm90IGdldCB0aHJlYWQgaGFuZGxlIGZvciBMV1AgJWQ6ICVzIiwKIAkg ICBsd3BpZCwgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwogCi0gIGVyciA9 IHRkX3Rocl9nZXRfaW5mbyAoJnRoLCAmdGkpOworICBlcnIgPSB0ZF90aHJf Z2V0X2luZm9fcCAoJnRoLCAmdGkpOwogICBpZiAoZXJyICE9IFREX09LKQog ICAgIGVycm9yICgiQ2Fubm90IGdldCB0aHJlYWQgaW5mbyBmb3IgTFdQICVk OiAlcyIsCiAJICAgbHdwaWQsIHRocmVhZF9kYl9lcnJfc3RyIChlcnIpKTsK QEAgLTI2Niw3ICsyOTAsNyBAQCBmaW5kX29uZV90aHJlYWQgKHB0aWRfdCBw dGlkKQogCiAgIGlmICh0aHJlYWRfZGJfdXNlX2V2ZW50cykKICAgICB7Ci0g ICAgICBlcnIgPSB0ZF90aHJfZXZlbnRfZW5hYmxlICgmdGgsIDEpOworICAg ICAgZXJyID0gdGRfdGhyX2V2ZW50X2VuYWJsZV9wICgmdGgsIDEpOwogICAg ICAgaWYgKGVyciAhPSBURF9PSykKIAllcnJvciAoIkNhbm5vdCBlbmFibGUg dGhyZWFkIGV2ZW50IHJlcG9ydGluZyBmb3IgJWQ6ICVzIiwKIAkgICAgICAg dGkudGlfbGlkLCB0aHJlYWRfZGJfZXJyX3N0ciAoZXJyKSk7CkBAIC0zMTAs NyArMzM0LDcgQEAgbWF5YmVfYXR0YWNoX3RocmVhZCAoY29uc3QgdGRfdGhy aGFuZGxlXwogCiAgIGlmICh0aHJlYWRfZGJfdXNlX2V2ZW50cykKICAgICB7 Ci0gICAgICBlcnIgPSB0ZF90aHJfZXZlbnRfZW5hYmxlICh0aF9wLCAxKTsK KyAgICAgIGVyciA9IHRkX3Rocl9ldmVudF9lbmFibGVfcCAodGhfcCwgMSk7 CiAgICAgICBpZiAoZXJyICE9IFREX09LKQogCWVycm9yICgiQ2Fubm90IGVu YWJsZSB0aHJlYWQgZXZlbnQgcmVwb3J0aW5nIGZvciAlZDogJXMiLAogCSAg ICAgICB0aV9wLT50aV9saWQsIHRocmVhZF9kYl9lcnJfc3RyIChlcnIpKTsK QEAgLTMyMyw3ICszNDcsNyBAQCBmaW5kX25ld190aHJlYWRzX2NhbGxiYWNr IChjb25zdCB0ZF90aHJoCiAgIHRkX3RocmluZm9fdCB0aTsKICAgdGRfZXJy X2UgZXJyOwogCi0gIGVyciA9IHRkX3Rocl9nZXRfaW5mbyAodGhfcCwgJnRp KTsKKyAgZXJyID0gdGRfdGhyX2dldF9pbmZvX3AgKHRoX3AsICZ0aSk7CiAg IGlmIChlcnIgIT0gVERfT0spCiAgICAgZXJyb3IgKCJDYW5ub3QgZ2V0IHRo cmVhZCBpbmZvOiAlcyIsIHRocmVhZF9kYl9lcnJfc3RyIChlcnIpKTsKIApA QCAtMzUwLDEwICszNzQsMTAgQEAgdGhyZWFkX2RiX2ZpbmRfbmV3X3RocmVh ZHMgKHZvaWQpCiAgICAgcmV0dXJuOwogCiAgIC8qIEl0ZXJhdGUgb3ZlciBh bGwgdXNlci1zcGFjZSB0aHJlYWRzIHRvIGRpc2NvdmVyIG5ldyB0aHJlYWRz LiAgKi8KLSAgZXJyID0gdGRfdGFfdGhyX2l0ZXIgKHByb2MtPnRocmVhZF9h Z2VudCwKLQkJCWZpbmRfbmV3X3RocmVhZHNfY2FsbGJhY2ssIE5VTEwsCi0J CQlURF9USFJfQU5ZX1NUQVRFLCBURF9USFJfTE9XRVNUX1BSSU9SSVRZLAot CQkJVERfU0lHTk9fTUFTSywgVERfVEhSX0FOWV9VU0VSX0ZMQUdTKTsKKyAg ZXJyID0gdGRfdGFfdGhyX2l0ZXJfcCAocHJvYy0+dGhyZWFkX2FnZW50LAor CQkJICBmaW5kX25ld190aHJlYWRzX2NhbGxiYWNrLCBOVUxMLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBURF9USFJfQU5ZX1NUQVRFLCBURF9USFJf TE9XRVNUX1BSSU9SSVRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICBU RF9TSUdOT19NQVNLLCBURF9USFJfQU5ZX1VTRVJfRkxBR1MpOwogICBpZiAo ZXJyICE9IFREX09LKQogICAgIGVycm9yICgiQ2Fubm90IGZpbmQgbmV3IHRo cmVhZHM6ICVzIiwgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwogfQpAQCAt MzY2LDEwICszOTAsMTAgQEAgdGhyZWFkX2RiX2ZpbmRfbmV3X3RocmVhZHMg KHZvaWQpCiBzdGF0aWMgdm9pZAogdGhyZWFkX2RiX2xvb2tfdXBfc3ltYm9s cyAodm9pZCkKIHsKLSAgY29uc3QgY2hhciAqKnN5bV9saXN0ID0gdGRfc3lt Ym9sX2xpc3QgKCk7CisgIGNvbnN0IGNoYXIgKipzeW1fbGlzdDsKICAgQ09S RV9BRERSIHVudXNlZDsKIAotICBmb3IgKHN5bV9saXN0ID0gdGRfc3ltYm9s X2xpc3QgKCk7ICpzeW1fbGlzdDsgc3ltX2xpc3QrKykKKyAgZm9yIChzeW1f bGlzdCA9IHRkX3N5bWJvbF9saXN0X3AgKCk7ICpzeW1fbGlzdDsgc3ltX2xp c3QrKykKICAgICBsb29rX3VwX29uZV9zeW1ib2wgKCpzeW1fbGlzdCwgJnVu dXNlZCk7CiB9CiAKQEAgLTM4MywxMCArNDA3LDYgQEAgdGhyZWFkX2RiX2dl dF90bHNfYWRkcmVzcyAoc3RydWN0IHRocmVhZAogICBzdHJ1Y3QgbHdwX2lu Zm8gKmx3cDsKICAgc3RydWN0IHRocmVhZF9pbmZvICpzYXZlZF9pbmZlcmlv cjsKIAotICAvKiBJZiB0aGUgdGhyZWFkIGxheWVyIGlzIG5vdCAoeWV0KSBp bml0aWFsaXplZCwgZmFpbC4gICovCi0gIGlmICghZ2V0X3RocmVhZF9wcm9j ZXNzICh0aHJlYWQpLT5hbGxfc3ltYm9sc19sb29rZWRfdXApCi0gICAgcmV0 dXJuIFREX0VSUjsKLQogICBsd3AgPSBnZXRfdGhyZWFkX2x3cCAodGhyZWFk KTsKICAgaWYgKCFsd3AtPnRocmVhZF9rbm93bikKICAgICBmaW5kX29uZV90 aHJlYWQgKGx3cC0+aGVhZC5pZCk7CkBAIC0zOTgsOCArNDE4LDggQEAgdGhy ZWFkX2RiX2dldF90bHNfYWRkcmVzcyAoc3RydWN0IHRocmVhZAogICAvKiBO b3RlIHRoZSBjYXN0IHRocm91Z2ggdWludHB0cl90OiB0aGlzIGludGVyZmFj ZSBvbmx5IHdvcmtzIGlmCiAgICAgIGEgdGFyZ2V0IGFkZHJlc3MgZml0cyBp biBhIHBzYWRkcl90LCB3aGljaCBpcyBhIGhvc3QgcG9pbnRlci4KICAgICAg U28gYSAzMi1iaXQgZGVidWdnZXIgY2FuIG5vdCBhY2Nlc3MgNjQtYml0IFRM UyB0aHJvdWdoIHRoaXMuICAqLwotICBlcnIgPSB0ZF90aHJfdGxzX2dldF9h ZGRyICgmbHdwLT50aCwgKHBzYWRkcl90KSAodWludHB0cl90KSBsb2FkX21v ZHVsZSwKLQkJCSAgICAgb2Zmc2V0LCAmYWRkcik7CisgIGVyciA9IHRkX3Ro cl90bHNfZ2V0X2FkZHJfcCAoJmx3cC0+dGgsIChwc2FkZHJfdCkgKHVpbnRw dHJfdCkgbG9hZF9tb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0LCAmYWRkcik7CiAgIGN1cnJlbnRfaW5mZXJpb3IgPSBz YXZlZF9pbmZlcmlvcjsKICAgaWYgKGVyciA9PSBURF9PSykKICAgICB7CkBA IC00MTMsMTIgKzQzMywxNzIgQEAgdGhyZWFkX2RiX2dldF90bHNfYWRkcmVz cyAoc3RydWN0IHRocmVhZAogI2VuZGlmCiB9CiAKK3N0YXRpYyBpbnQKK3Ry eV90aHJlYWRfZGJfbG9hZF8xICh2b2lkICpoYW5kbGUpCit7CisgIHRkX2Vy cl9lIGVycjsKKyAgc3RydWN0IHByb2Nlc3NfaW5mbyAqcHJvYyA9IGN1cnJl bnRfcHJvY2VzcyAoKTsKKyAgc3RydWN0IHByb2Nlc3NfaW5mb19wcml2YXRl ICpwcml2ID0gcHJvYy0+cHJpdmF0ZTsKKworICAvKiBJbml0aWFsaXplIHBv aW50ZXJzIHRvIHRoZSBkeW5hbWljIGxpYnJhcnkgZnVuY3Rpb25zIHdlIHdp bGwgdXNlLgorICAgICBFc3NlbnRpYWwgZnVuY3Rpb25zIGZpcnN0LiAgKi8K KworI2RlZmluZSBDSEsoYSkJCQkJCQlcCisgIGlmICgoYSkgPT0gTlVMTCkg ewkJCQkJXAorICAgIGlmIChkZWJ1Z190aHJlYWRzKSB7CQkJCVwKKyAgICAg IGZwcmludGYgKHN0ZGVyciwgImRsc3ltOiAlc1xuIiwgZGxlcnJvciAoKSk7 CVwKKyAgICB9CQkJCQkJCVwKKyAgICByZXR1cm4gMDsJCQkJCQlcCisgIH0K KworICBDSEsgKHRkX3RhX25ld19wID0gZGxzeW0gKGhhbmRsZSwgInRkX3Rh X25ldyIpKTsKKworICAvKiBBdHRlbXB0IHRvIG9wZW4gYSBjb25uZWN0aW9u IHRvIHRoZSB0aHJlYWQgbGlicmFyeS4gICovCisgIGVyciA9IHRkX3RhX25l d19wICgmcHJpdi0+cHJvY19oYW5kbGUsICZwcml2LT50aHJlYWRfYWdlbnQp OworICBpZiAoZXJyICE9IFREX09LKQorICAgIHsKKyAgICAgIHRkX3RhX25l d19wID0gTlVMTDsKKyAgICAgIGlmIChkZWJ1Z190aHJlYWRzKQorCWZwcmlu dGYgKHN0ZGVyciwgInRkX3RhX25ldygpOiAlc1xuIiwgdGhyZWFkX2RiX2Vy cl9zdHIgKGVycikpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIENI SyAodGRfdGFfZXZlbnRfZ2V0bXNnX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRf dGFfZXZlbnRfZ2V0bXNnIikpOworICBDSEsgKHRkX3RhX3NldF9ldmVudF9w ID0gZGxzeW0gKGhhbmRsZSwgInRkX3RhX3NldF9ldmVudCIpKTsKKyAgQ0hL ICh0ZF90YV9ldmVudF9hZGRyX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGFf ZXZlbnRfYWRkciIpKTsKKyAgQ0hLICh0ZF90YV9tYXBfbHdwMnRocl9wID0g ZGxzeW0gKGhhbmRsZSwgInRkX3RhX21hcF9sd3AydGhyIikpOworICBDSEsg KHRkX3Rocl9nZXRfaW5mb19wID0gZGxzeW0gKGhhbmRsZSwgInRkX3Rocl9n ZXRfaW5mbyIpKTsKKyAgQ0hLICh0ZF90aHJfZXZlbnRfZW5hYmxlX3AgPSBk bHN5bSAoaGFuZGxlLCAidGRfdGhyX2V2ZW50X2VuYWJsZSIpKTsKKyAgQ0hL ICh0ZF90YV90aHJfaXRlcl9wID0gZGxzeW0gKGhhbmRsZSwgInRkX3RhX3Ro cl9pdGVyIikpOworICBDSEsgKHRkX3Rocl90bHNfZ2V0X2FkZHJfcCA9IGRs c3ltIChoYW5kbGUsICJ0ZF90aHJfdGxzX2dldF9hZGRyIikpOworICBDSEsg KHRkX3N5bWJvbF9saXN0X3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfc3ltYm9s X2xpc3QiKSk7CisKKyN1bmRlZiBDSEsKKworICByZXR1cm4gMTsKK30KKwor LyogTG9va3VwIGEgbGlicmFyeSBpbiB3aGljaCBnaXZlbiBzeW1ib2wgcmVz aWRlcy4KKyAgIE5vdGU6IHRoaXMgaXMgbG9va2luZyBpbiB0aGUgR0RCU0VS VkVSIHByb2Nlc3MsIG5vdCBpbiB0aGUgaW5mZXJpb3IuCisgICBSZXR1cm5z IGxpYnJhcnkgbmFtZSwgb3IgTlVMTC4gICovCisKK3N0YXRpYyBjb25zdCBj aGFyICoKK2RsYWRkcl90b19zb25hbWUgKGNvbnN0IHZvaWQgKmFkZHIpCit7 CisgIERsX2luZm8gaW5mbzsKKworICBpZiAoZGxhZGRyIChhZGRyLCAmaW5m bykgIT0gMCkKKyAgICByZXR1cm4gaW5mby5kbGlfZm5hbWU7CisgIHJldHVy biBOVUxMOworfQorCitzdGF0aWMgaW50Cit0cnlfdGhyZWFkX2RiX2xvYWQg KGNvbnN0IGNoYXIgKmxpYnJhcnkpCit7CisgIHZvaWQgKmhhbmRsZTsKKwor ICBpZiAoZGVidWdfdGhyZWFkcykKKyAgICBmcHJpbnRmIChzdGRlcnIsICJU cnlpbmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGlicmFyeTogJXMuXG4iLAorCSAg ICAgbGlicmFyeSk7CisgIGhhbmRsZSA9IGRsb3BlbiAobGlicmFyeSwgUlRM RF9OT1cpOworICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgeworICAgICAg aWYgKGRlYnVnX3RocmVhZHMpCisJZnByaW50ZiAoc3RkZXJyLCAiZGxvcGVu IGZhaWxlZDogJXMuXG4iLCBkbGVycm9yICgpKTsKKyAgICAgIHJldHVybiAw OworICAgIH0KKworICBpZiAoZGVidWdfdGhyZWFkcyAmJiBzdHJjaHIgKGxp YnJhcnksICcvJykgPT0gTlVMTCkKKyAgICB7CisgICAgICB2b2lkICp0ZF9p bml0OworCisgICAgICB0ZF9pbml0ID0gZGxzeW0gKGhhbmRsZSwgInRkX2lu aXQiKTsKKyAgICAgIGlmICh0ZF9pbml0ICE9IE5VTEwpCisgICAgICAgIHsK KyAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBsaWJwYXRoID0gZGxhZGRy X3RvX3NvbmFtZSAodGRfaW5pdCk7CisKKyAgICAgICAgICBpZiAobGlicGF0 aCAhPSBOVUxMKQorICAgICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiSG9z dCAlcyByZXNvbHZlZCB0bzogJXMuXG4iLAorCQkgICAgIGxpYnJhcnksIGxp YnBhdGgpOworICAgICAgICB9CisgICAgfQorCisgIGlmICh0cnlfdGhyZWFk X2RiX2xvYWRfMSAoaGFuZGxlKSkKKyAgICByZXR1cm4gMTsKKworICAvKiBU aGlzIGxpYnJhcnkgInJlZnVzZWQiIHRvIHdvcmsgb24gY3VycmVudCBpbmZl cmlvci4gICovCisgIGRsY2xvc2UgKGhhbmRsZSk7CisgIHJldHVybiAwOwor fQorCitzdGF0aWMgaW50Cit0aHJlYWRfZGJfbG9hZF9zZWFyY2ggKCkKK3sK KyAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgY29uc3QgY2hhciAqc2VhcmNo X3BhdGg7CisgIGludCByYyA9IDA7CisKKworICBpZiAobGlidGhyZWFkX2Ri X3NlYXJjaF9wYXRoID09IE5VTEwpCisgICAgbGlidGhyZWFkX2RiX3NlYXJj aF9wYXRoID0geHN0cmR1cCAoTElCVEhSRUFEX0RCX1NFQVJDSF9QQVRIKTsK KworICBzZWFyY2hfcGF0aCA9IGxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aDsK KyAgd2hpbGUgKCpzZWFyY2hfcGF0aCkKKyAgICB7CisgICAgICBjb25zdCBj aGFyICplbmQgPSBzdHJjaHIgKHNlYXJjaF9wYXRoLCAnOicpOworICAgICAg aWYgKGVuZCkKKwl7CisJICBzaXplX3QgbGVuID0gZW5kIC0gc2VhcmNoX3Bh dGg7CisgICAgICAgICAgaWYgKGxlbiArIDEgKyBzdHJsZW4gKExJQlRIUkVB RF9EQl9TTykgKyAxID4gc2l6ZW9mIChwYXRoKSkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgY2hhciAqY3AgPSB4bWFsbG9jIChsZW4gKyAxKTsK KyAgICAgICAgICAgICAgbWVtY3B5IChjcCwgc2VhcmNoX3BhdGgsIGxlbik7 CisgICAgICAgICAgICAgIGNwW2xlbl0gPSAnXDAnOworICAgICAgICAgICAg ICB3YXJuaW5nICgibGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoIGNvbXBvbmVu dCB0b28gbG9uZywgIgorCQkgICAgICAgImlnbm9yZWQ6ICVzLiIsIGNwKTsK KyAgICAgICAgICAgICAgZnJlZSAoY3ApOworICAgICAgICAgICAgICBzZWFy Y2hfcGF0aCArPSBsZW4gKyAxOworICAgICAgICAgICAgICBjb250aW51ZTsK KyAgICAgICAgICAgIH0KKwkgIG1lbWNweSAocGF0aCwgc2VhcmNoX3BhdGgs IGxlbik7CisJICBwYXRoW2xlbl0gPSAnXDAnOworCSAgc2VhcmNoX3BhdGgg Kz0gbGVuICsgMTsKKwl9CisgICAgICBlbHNlCisJeworICAgICAgICAgIHNp emVfdCBsZW4gPSBzdHJsZW4gKHNlYXJjaF9wYXRoKTsKKworICAgICAgICAg IGlmIChsZW4gKyAxICsgc3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSA+ IHNpemVvZiAocGF0aCkpCisgICAgICAgICAgICB7CisJICAgICAgd2Fybmlu ZyAoImxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aCBjb21wb25lbnQgdG9vIGxv bmcsIgorCQkgICAgICAgIiBpZ25vcmVkOiAlcy4iLCBzZWFyY2hfcGF0aCk7 CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCSAgbWVt Y3B5IChwYXRoLCBzZWFyY2hfcGF0aCwgbGVuICsgMSk7CisJICBzZWFyY2hf cGF0aCArPSBsZW47CisJfQorICAgICAgc3RyY2F0IChwYXRoLCAiLyIpOwor ICAgICAgc3RyY2F0IChwYXRoLCBMSUJUSFJFQURfREJfU08pOworICAgICAg aWYgKGRlYnVnX3RocmVhZHMpCisgICAgICAgIGZwcmludGYgKHN0ZGVyciwg InRocmVhZF9kYl9sb2FkX3NlYXJjaCB0cnlpbmcgJXNcbiIsIHBhdGgpOwor ICAgICAgaWYgKHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCkpCisJeworCSAg cmMgPSAxOworCSAgYnJlYWs7CisJfQorICAgIH0KKyAgaWYgKHJjID09IDAp CisgICAgcmMgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKExJQlRIUkVBRF9EQl9T Tyk7CisKKyAgaWYgKGRlYnVnX3RocmVhZHMpCisgICAgZnByaW50ZiAoc3Rk ZXJyLCAidGhyZWFkX2RiX2xvYWRfc2VhcmNoIHJldHVybmluZyAlZFxuIiwg cmMpOworICByZXR1cm4gcmM7Cit9CisKIGludAogdGhyZWFkX2RiX2luaXQg KGludCB1c2VfZXZlbnRzKQogewotICBpbnQgZXJyOwogICBzdHJ1Y3QgcHJv Y2Vzc19pbmZvICpwcm9jID0gY3VycmVudF9wcm9jZXNzICgpOwotICBzdHJ1 Y3QgcHJvY2Vzc19pbmZvX3ByaXZhdGUgKnByaXYgPSBwcm9jLT5wcml2YXRl OwogCiAgIC8qIEZJWE1FIGRyb3cvMjAwNC0xMC0xNjogVGhpcyBpcyB0aGUg Im92ZXJhbGwgcHJvY2VzcyBJRCIsIHdoaWNoCiAgICAgIEdOVS9MaW51eCBj YWxscyB0Z2lkLCAidGhyZWFkIGdyb3VwIElEIi4gIFdoZW4gd2Ugc3VwcG9y dApAQCAtNDMzLDI2ICs2MTMsMTQgQEAgdGhyZWFkX2RiX2luaXQgKGludCB1 c2VfZXZlbnRzKQogCiAgIHRocmVhZF9kYl91c2VfZXZlbnRzID0gdXNlX2V2 ZW50czsKIAotICBlcnIgPSB0ZF90YV9uZXcgKCZwcml2LT5wcm9jX2hhbmRs ZSwgJnByaXYtPnRocmVhZF9hZ2VudCk7Ci0gIHN3aXRjaCAoZXJyKQorICBp ZiAodGhyZWFkX2RiX2xvYWRfc2VhcmNoICgpKQogICAgIHsKLSAgICBjYXNl IFREX05PTElCVEhSRUFEOgotICAgICAgLyogTm8gdGhyZWFkIGxpYnJhcnkg d2FzIGRldGVjdGVkLiAgKi8KLSAgICAgIHJldHVybiAwOwotCi0gICAgY2Fz ZSBURF9PSzoKLSAgICAgIC8qIFRoZSB0aHJlYWQgbGlicmFyeSB3YXMgZGV0 ZWN0ZWQuICAqLwotCiAgICAgICBpZiAodXNlX2V2ZW50cyAmJiB0aHJlYWRf ZGJfZW5hYmxlX3JlcG9ydGluZyAoKSA9PSAwKQogCXJldHVybiAwOwogICAg ICAgdGhyZWFkX2RiX2ZpbmRfbmV3X3RocmVhZHMgKCk7CiAgICAgICB0aHJl YWRfZGJfbG9va191cF9zeW1ib2xzICgpOwogICAgICAgcHJvYy0+YWxsX3N5 bWJvbHNfbG9va2VkX3VwID0gMTsKICAgICAgIHJldHVybiAxOwotCi0gICAg ZGVmYXVsdDoKLSAgICAgIHdhcm5pbmcgKCJlcnJvciBpbml0aWFsaXppbmcg dGhyZWFkX2RiIGxpYnJhcnk6ICVzIiwKLQkgICAgICAgdGhyZWFkX2RiX2Vy cl9zdHIgKGVycikpOwogICAgIH0KIAogICByZXR1cm4gMDsKSW5kZXg6IGdk YnNlcnZlci9jb25maWd1cmUuYWMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJl LmFjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI2CmRpZmYgLXUgLXAgLXUg LXIxLjI2IGNvbmZpZ3VyZS5hYwotLS0gZ2Ric2VydmVyL2NvbmZpZ3VyZS5h Ywk2IEp1bCAyMDA5IDE4OjMxOjE5IC0wMDAwCTEuMjYKKysrIGdkYnNlcnZl ci9jb25maWd1cmUuYWMJMiBTZXAgMjAwOSAxNjo0MDo0OCAtMDAwMApAQCAt MTksMTYgKzE5LDE3IEBAIGRubCBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2UKIAogZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0 b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCiAKLUFDX1BS RVJFUSgyLjU5KWRubAorQUNfUFJFUkVRKDIuNjQpZG5sCiAKLUFDX0lOSVQo c2VydmVyLmMpCitBQ19JTklUCitBQ19DT05GSUdfU1JDRElSKFtzZXJ2ZXIu Y10pCiBBQ19DT05GSUdfSEVBREVSKGNvbmZpZy5oOmNvbmZpZy5pbikKIEFD X0NPTkZJR19MSUJPQkpfRElSKC4uL2dudWxpYikKIAogQUNfUFJPR19DQwot QUNfR05VX1NPVVJDRQorQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCiAKLUFD X0NBTk9OSUNBTF9TWVNURU0KK0FDX0NBTk9OSUNBTF9UQVJHRVQKIAogQUNf UFJPR19JTlNUQUxMCiAKQEAgLTQ3LDE4ICs0OCwxNSBAQCBBQ19SRVBMQUNF X0ZVTkNTKG1lbW1lbSkKIAogaGF2ZV9lcnJubz1ubwogQUNfTVNHX0NIRUNL SU5HKGZvciBlcnJubykKLUFDX1RSWV9MSU5LKFsKK0FDX0xJTktfSUZFTFNF KFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBIQVZFX0VSUk5PX0gKICNpbmNs dWRlIDxlcnJuby5oPgotI2VuZGlmXSwgW3N0YXRpYyBpbnQgeDsgeCA9IGVy cm5vO10sCi0gIFtBQ19NU0dfUkVTVUxUKHllcyAtIGluIGVycm5vLmgpOyBB Q19ERUZJTkUoSEFWRV9FUlJOTywgMSwgW0RlZmluZSBpZiBlcnJubyBpcyBh dmFpbGFibGVdKSBoYXZlX2Vycm5vPXllc10pCisjZW5kaWZdXSwgW1tzdGF0 aWMgaW50IHg7IHggPSBlcnJubztdXSldLFtBQ19NU0dfUkVTVUxUKHllcyAt IGluIGVycm5vLmgpOyBBQ19ERUZJTkUoSEFWRV9FUlJOTywgMSwgW0RlZmlu ZSBpZiBlcnJubyBpcyBhdmFpbGFibGVdKSBoYXZlX2Vycm5vPXllc10sW10p CiBpZiB0ZXN0ICRoYXZlX2Vycm5vID0gbm87IHRoZW4KLUFDX1RSWV9MSU5L KFsKK0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBI QVZFX0VSUk5PX0gKICNpbmNsdWRlIDxlcnJuby5oPgotI2VuZGlmXSwgW2V4 dGVybiBpbnQgZXJybm87IHN0YXRpYyBpbnQgeDsgeCA9IGVycm5vO10sCi0g IFtBQ19NU0dfUkVTVUxUKHllcyAtIG11c3QgZGVmaW5lKTsgQUNfREVGSU5F KEhBVkVfRVJSTk8sIDEsIFtEZWZpbmUgaWYgZXJybm8gaXMgYXZhaWxhYmxl XSkgQUNfREVGSU5FKE1VU1RfREVGSU5FX0VSUk5PLCAxLCBbQ2hlY2tpbmcg aWYgZXJybm8gbXVzdCBiZSBkZWZpbmVkXSldLAotICBbQUNfTVNHX1JFU1VM VChubyldKQorI2VuZGlmXV0sIFtbZXh0ZXJuIGludCBlcnJubzsgc3RhdGlj IGludCB4OyB4ID0gZXJybm87XV0pXSxbQUNfTVNHX1JFU1VMVCh5ZXMgLSBt dXN0IGRlZmluZSk7IEFDX0RFRklORShIQVZFX0VSUk5PLCAxLCBbRGVmaW5l IGlmIGVycm5vIGlzIGF2YWlsYWJsZV0pIEFDX0RFRklORShNVVNUX0RFRklO RV9FUlJOTywgMSwgW0NoZWNraW5nIGlmIGVycm5vIG11c3QgYmUgZGVmaW5l ZF0pXSxbQUNfTVNHX1JFU1VMVChubyldKQogZmkKIAogQUNfQ0hFQ0tfREVD TFMoW3N0cmVycm9yLCBwZXJyb3IsIG1lbW1lbV0pCkBAIC0xMDMsMTAgKzEw MSw3IEBAIGlmIHRlc3QgIiR7c3J2X2xpbnV4X3JlZ3NldHN9IiA9ICJ5ZXMi OyAKIAogICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIFBUUkFDRV9HRVRSRUdTKQog ICBBQ19DQUNIRV9WQUwoZ2Ric3J2X2N2X2hhdmVfcHRyYWNlX2dldHJlZ3Ms Ci0gIFtBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD5d LAotCQkgIFtQVFJBQ0VfR0VUUkVHUztdLAotCQkgIFtnZGJzcnZfY3ZfaGF2 ZV9wdHJhY2VfZ2V0cmVncz15ZXNdLAotCQkgIFtnZGJzcnZfY3ZfaGF2ZV9w dHJhY2VfZ2V0cmVncz1ub10pXSkKKyAgW0FDX0NPTVBJTEVfSUZFTFNFKFtB Q19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPl1dLCBb W1BUUkFDRV9HRVRSRUdTO11dKV0sW2dkYnNydl9jdl9oYXZlX3B0cmFjZV9n ZXRyZWdzPXllc10sW2dkYnNydl9jdl9oYXZlX3B0cmFjZV9nZXRyZWdzPW5v XSldKQogICBBQ19NU0dfUkVTVUxUKCRnZGJzcnZfY3ZfaGF2ZV9wdHJhY2Vf Z2V0cmVncykKICAgaWYgdGVzdCAiJHtnZGJzcnZfY3ZfaGF2ZV9wdHJhY2Vf Z2V0cmVnc30iID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkUoSEFWRV9Q VFJBQ0VfR0VUUkVHUywgMSwKQEAgLTExNiwxMCArMTExLDcgQEAgaWYgdGVz dCAiJHtzcnZfbGludXhfcmVnc2V0c30iID0gInllcyI7IAogCiAgIEFDX01T R19DSEVDS0lORyhmb3IgUFRSQUNFX0dFVEZQWFJFR1MpCiAgIEFDX0NBQ0hF X1ZBTChnZGJzcnZfY3ZfaGF2ZV9wdHJhY2VfZ2V0ZnB4cmVncywKLSAgW0FD X1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPl0sCi0JCSAg W1BUUkFDRV9HRVRGUFhSRUdTO10sCi0JCSAgW2dkYnNydl9jdl9oYXZlX3B0 cmFjZV9nZXRmcHhyZWdzPXllc10sCi0JCSAgW2dkYnNydl9jdl9oYXZlX3B0 cmFjZV9nZXRmcHhyZWdzPW5vXSldKQorICBbQUNfQ09NUElMRV9JRkVMU0Uo W0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+XV0s IFtbUFRSQUNFX0dFVEZQWFJFR1M7XV0pXSxbZ2Ric3J2X2N2X2hhdmVfcHRy YWNlX2dldGZweHJlZ3M9eWVzXSxbZ2Ric3J2X2N2X2hhdmVfcHRyYWNlX2dl dGZweHJlZ3M9bm9dKV0pCiAgIEFDX01TR19SRVNVTFQoJGdkYnNydl9jdl9o YXZlX3B0cmFjZV9nZXRmcHhyZWdzKQogICBpZiB0ZXN0ICIke2dkYnNydl9j dl9oYXZlX3B0cmFjZV9nZXRmcHhyZWdzfSIgPSAieWVzIjsgdGhlbgogICAg IEFDX0RFRklORShIQVZFX1BUUkFDRV9HRVRGUFhSRUdTLCAxLApAQCAtMTQy LDggKzEzNCw4IEBAIFVTRV9USFJFQURfREI9CiBpZiB0ZXN0ICIkc3J2X2xp bnV4X3RocmVhZF9kYiIgPSAieWVzIjsgdGhlbgogICBTUlZfQ0hFQ0tfVEhS RUFEX0RCCiAgIGlmIHRlc3QgIiRzcnZfY3ZfdGhyZWFkX2RiIiA9IG5vOyB0 aGVuCi0gICAgQUNfV0FSTihbQ291bGQgbm90IGZpbmQgbGlidGhyZWFkX2Ri Ll0pCi0gICAgQUNfV0FSTihbRGlzYWJsaW5nIHRocmVhZCBzdXBwb3J0IGlu IGdkYnNlcnZlci5dKQorICAgIEFDX01TR19XQVJOKENvdWxkIG5vdCBmaW5k IGxpYnRocmVhZF9kYi4pCisgICAgQUNfTVNHX1dBUk4oRGlzYWJsaW5nIHRo cmVhZCBzdXBwb3J0IGluIGdkYnNlcnZlci4pCiAgICAgc3J2X2xpbnV4X3Ro cmVhZF9kYj1ubwogICBlbHNlCiAgICAgc3J2X2xpYnM9IiRzcnZfY3ZfdGhy ZWFkX2RiIgpAQCAtMTUxLDcgKzE0Myw3IEBAIGlmIHRlc3QgIiRzcnZfbGlu dXhfdGhyZWFkX2RiIiA9ICJ5ZXMiOyAKICAgZmkKICAgb2xkX0xERkxBR1M9 IiRMREZMQUdTIgogICBMREZMQUdTPSIkTERGTEFHUyAtcmR5bmFtaWMiCi0g IEFDX1RSWV9MSU5LKFtdLCBbXSwgW1JEWU5BTUlDPS1yZHluYW1pY10sIFtS RFlOQU1JQz1dKQorICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFN KFtbXV0sIFtbXV0pXSxbUkRZTkFNSUM9LXJkeW5hbWljXSxbUkRZTkFNSUM9 XSkKICAgQUNfU1VCU1QoUkRZTkFNSUMpCiAgIExERkxBR1M9IiRvbGRfTERG TEFHUyIKIGZpCkBAIC0xNjAsOSArMTUyLDcgQEAgaWYgdGVzdCAiJHNydl9s aW51eF90aHJlYWRfZGIiID0gInllcyI7IAogICBzcnZfdGhyZWFkX2RlcGZp bGVzPSJ0aHJlYWQtZGIubyBwcm9jLXNlcnZpY2UubyIKICAgVVNFX1RIUkVB RF9EQj0iLURVU0VfVEhSRUFEX0RCIgogICBBQ19DQUNIRV9DSEVDSyhbZm9y IFREX1ZFUlNJT05dLCBnZGJzcnZfY3ZfaGF2ZV90ZF92ZXJzaW9uLAotICBb QUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDx0aHJlYWRfZGIuaD5dLCBbVERf VkVSU0lPTjtdLAotCQkgIFtnZGJzcnZfY3ZfaGF2ZV90ZF92ZXJzaW9uPXll c10sCi0JCSAgW2dkYnNydl9jdl9oYXZlX3RkX3ZlcnNpb249bm9dKV0pCisg IFtBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1 ZGUgPHRocmVhZF9kYi5oPl1dLCBbW1REX1ZFUlNJT047XV0pXSxbZ2Ric3J2 X2N2X2hhdmVfdGRfdmVyc2lvbj15ZXNdLFtnZGJzcnZfY3ZfaGF2ZV90ZF92 ZXJzaW9uPW5vXSldKQogICBpZiB0ZXN0ICRnZGJzcnZfY3ZfaGF2ZV90ZF92 ZXJzaW9uID0geWVzOyB0aGVuCiAgICAgQUNfREVGSU5FKEhBVkVfVERfVkVS U0lPTiwgMSwgW0RlZmluZSBpZiBURF9WRVJTSU9OIGlzIGF2YWlsYWJsZS5d KQogICBmaQpAQCAtMTkyLDkgKzE4MiwxMCBAQCBBQ19TVUJTVChVU0VfVEhS RUFEX0RCKQogQUNfU1VCU1Qoc3J2X3htbGJ1aWx0aW4pCiBBQ19TVUJTVChz cnZfeG1sZmlsZXMpCiAKLUFDX09VVFBVVChNYWtlZmlsZSwKLVtjYXNlIHgk Q09ORklHX0hFQURFUlMgaW4KK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVd KQorQUNfQ09ORklHX0NPTU1BTkRTKFtkZWZhdWx0XSxbY2FzZSB4JENPTkZJ R19IRUFERVJTIGluCiB4Y29uZmlnLmg6Y29uZmlnLmluKQogZWNobyA+IHN0 YW1wLWggOzsKIGVzYWMKLV0pCitdLFtdKQorQUNfT1VUUFVUCkluZGV4OiBn ZGJzZXJ2ZXIvY29uZmlndXJlCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZSx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MApkaWZmIC11IC1wIC11IC1yMS40 MCBjb25maWd1cmUKLS0tIGdkYnNlcnZlci9jb25maWd1cmUJMjIgQXVnIDIw MDkgMTY6NTY6NDIgLTAwMDAJMS40MAorKysgZ2Ric2VydmVyL2NvbmZpZ3Vy ZQkyIFNlcCAyMDA5IDE2OjQwOjQ5IC0wMDAwCkBAIC0yMTgyLDYgKzIxODIs NyBAQCBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CiAK IAogCisKIGFjX2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMg Y29uZmlnLmg6Y29uZmlnLmluIgogCiAKQEAgLTM0MTIsNyArMzQxMyw2IEBA ICRhc19lY2hvICIkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnMKIAog CiAKLQogYWNfYXV4X2Rpcj0KIGZvciBhY19kaXIgaW4gIiRzcmNkaXIiICIk c3JjZGlyLy4uIiAiJHNyY2Rpci8uLi8uLiI7IGRvCiAgIGZvciBhY190IGlu IGluc3RhbGwtc2ggaW5zdGFsbC5zaCBzaHRvb2w7IGRvCkBAIC0zNTQ3LDcg KzM1NDcsNiBAQCB0ZXN0IC1uICIkdGFyZ2V0X2FsaWFzIiAmJgogICAgIE5P TkVOT05Fcyx4LHgsICYmCiAgIHByb2dyYW1fcHJlZml4PSR7dGFyZ2V0X2Fs aWFzfS0KIAotCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdl IHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKICMgc28gb25lIHNjcmlw dCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tl biBvcgogIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CkBAIC00MjM3LDcgKzQy MzYsNyBAQCB0ZF90YV9uZXcoKTsKIH0KIF9BQ0VPRgogaWYgYWNfZm5fY190 cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICBzcnZfY3ZfdGhyZWFkX2Ri PSItbHRocmVhZF9kYiIKKyAgc3J2X2N2X3RocmVhZF9kYj0iLWxkbCIKIGVs c2UKICAgc3J2X2N2X3RocmVhZF9kYj1ubwogCg== --001636ed6f5dccb50804729af714--