From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29088 invoked by alias); 6 Feb 2015 16:42:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 29073 invoked by uid 89); 6 Feb 2015 16:42:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 06 Feb 2015 16:42:07 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t16Gg6IP013386 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 6 Feb 2015 11:42:06 -0500 Received: from reynosa.quesejoda.com (vpn-57-46.rdu2.redhat.com [10.10.57.46]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t16Gg4x3030294; Fri, 6 Feb 2015 11:42:05 -0500 Message-ID: <54D4EEDC.1070307@redhat.com> Date: Fri, 06 Feb 2015 16:42:00 -0000 From: Aldy Hernandez User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Jason Merrill CC: Richard Biener , gcc-patches Subject: Re: [debug-early] C++ clones and limbo DIEs References: <54B87E5B.1090502@redhat.com> <54B88149.1040906@redhat.com> <54B94F4D.4040009@redhat.com> <54B97854.7040007@redhat.com> <54C296B5.4050506@redhat.com> <54C7FA41.8010903@redhat.com> <54C92A59.4070401@redhat.com> <54C92A80.80306@redhat.com> <54C92FA8.9040005@redhat.com> <54CBEB69.3000401@redhat.com> <54CBFFE7.1010003@redhat.com> <54CC1885.5010105@redhat.com> <54CDC625.8070902@redhat.com> <54CEEBD5.7090608@redhat.com> <54CEF9FE.6020107@redhat.com> <54D2B907.1040309@redhat.com> <54D3CE5A.1000609@redhat.com> <54D4159F.4090601@redhat.com> <54D4C95D.8040000@redhat.com> In-Reply-To: <54D4C95D.8040000@redhat.com> Content-Type: multipart/mixed; boundary="------------090508060300040605090903" X-SW-Source: 2015-02/txt/msg00412.txt.bz2 This is a multi-part message in MIME format. --------------090508060300040605090903 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1323 >> + && DECL_CONTEXT (snode->decl) >> + && TREE_CODE (DECL_CONTEXT (snode->decl)) != FUNCTION_DECL) > > I think this should be !decl_function_context (snode->decl), in case > there's a class or BLOCK between the symbol and its enclosing function. Done, also for the iteration through reachable functions. > >> dwarf2out_type_decl (tree decl, int local) >> + /* ?? Technically, we shouldn't need this hook at all, as all >> + symbols (and by consequence their types) will be outputed from >> + finalize_compilation_unit. > > Note that we also want to emit debug info about some types that are not > referenced by symbols, such as when a type is used in a cast. Fair enough. I've removed the comment. >> +/* Perform any cleanups needed after the early debug generation pass >> + has run. */ >> + >> +static void >> +dwarf2out_early_finish (void) > > Since this is also called from dwarf2out_finish, let's call it something > more descriptive, say, flush_limbo_dies? I was actually thinking of using dwarf2out_early_finish() to mop things up as we generate early (or stream out) other auxiliary tables (pubname_table, pubtype_table, file_table, etc). More details on that later. If so, can I leave it as is? How is this version? No regressions on guality. Target libraries build fine. Aldy --------------090508060300040605090903 Content-Type: text/plain; charset=UTF-8; name="curr" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="curr" Content-length: 40822 ZGlmZiAtLWdpdCBhL2djYy9jL2MtZGVjbC5jIGIvZ2NjL2MvYy1kZWNsLmMK aW5kZXggZDFlMWY3NC4uN2UxMzA1YyAxMDA2NDQKLS0tIGEvZ2NjL2MvYy1k ZWNsLmMKKysrIGIvZ2NjL2MvYy1kZWNsLmMKQEAgLTEwNjU3LDEwICsxMDY1 Nyw3IEBAIGNfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9uc18xICh0cmVlIGds b2JhbHMpCiAgICAgIGhlcmUsIGFuZCBzdGFydCB0aGUgVFZfUEhBU0VfREJH SU5GTyB0aW1lci4gIElzIGl0IHdvcnRoIGl0LCBvcgogICAgICB3b3VsZCBp dCBjb252b2x1dGUgdGhpbmdzPyAgKi8KICAgZm9yIChkZWNsID0gZ2xvYmFs czsgZGVjbDsgZGVjbCA9IERFQ0xfQ0hBSU4gKGRlY2wpKQotICAgIHsKLSAg ICAgIGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbl8xIChkZWNsKTsKLSAgICAg IGRlYnVnX2hvb2tzLT5lYXJseV9nbG9iYWxfZGVjbCAoZGVjbCk7Ci0gICAg fQorICAgIGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbl8xIChkZWNsKTsKICAg LyogPz8gU2ltaWxhcmx5IGhlcmUuIFN0b3AgVFZfUEhBU0VfREJHSU5GTyBh bmQgc3RhcnQKICAgICAgVFZfUEhBU0VfREVGRVJSRUQgYWdhaW4uICAqLwog fQpkaWZmIC0tZ2l0IGEvZ2NjL2NncmFwaHVuaXQuYyBiL2djYy9jZ3JhcGh1 bml0LmMKaW5kZXggZmVkMWEzZS4uM2I1N2RmZSAxMDA2NDQKLS0tIGEvZ2Nj L2NncmFwaHVuaXQuYworKysgYi9nY2MvY2dyYXBodW5pdC5jCkBAIC0yMzI2 LDYgKzIzMjYsMTYgQEAgc3ltYm9sX3RhYmxlOjpmaW5hbGl6ZV9jb21waWxh dGlvbl91bml0ICh2b2lkKQogICBpZiAoZmxhZ19kdW1wX3Bhc3NlcykKICAg ICBkdW1wX3Bhc3NlcyAoKTsKIAorICAvKiBHZW5lcmF0ZSBlYXJseSBkZWJ1 ZyBmb3IgZ2xvYmFsIHN5bWJvbHMuICBBbnkgbG9jYWwgc3ltYm9scyB3aWxs CisgICAgIGJlIGhhbmRsZWQgYnkgZWl0aGVyIGhhbmRsaW5nIHJlYWNoYWJs ZSBmdW5jdGlvbnMgZnVydGhlciBkb3duCisgICAgIChhbmQgYnkgY29uc2Vx dWVuY2UsIGxvY2FsbHkgc2NvcGVkIHN5bWJvbHMpLCBvciBieSBnZW5lcmF0 aW5nCisgICAgIERJRXMgZm9yIHR5cGVzLiAgKi8KKyAgc3ltdGFiX25vZGUg KnNub2RlOworICBGT1JfRUFDSF9TWU1CT0wgKHNub2RlKQorICAgIGlmIChU UkVFX0NPREUgKHNub2RlLT5kZWNsKSAhPSBGVU5DVElPTl9ERUNMCisJJiYg IWRlY2xfZnVuY3Rpb25fY29udGV4dCAoc25vZGUtPmRlY2wpKQorICAgICAg KCpkZWJ1Z19ob29rcy0+ZWFybHlfZ2xvYmFsX2RlY2wpIChzbm9kZS0+ZGVj bCk7CisKICAgLyogR2ltcGxpZnkgYW5kIGxvd2VyIGFsbCBmdW5jdGlvbnMs IGNvbXB1dGUgcmVhY2hhYmlsaXR5IGFuZAogICAgICByZW1vdmUgdW5yZWFj aGFibGUgbm9kZXMuICAqLwogICBhbmFseXplX2Z1bmN0aW9ucyAoKTsKQEAg LTIzMzYsNiArMjM0NiwxNyBAQCBzeW1ib2xfdGFibGU6OmZpbmFsaXplX2Nv bXBpbGF0aW9uX3VuaXQgKHZvaWQpCiAgIC8qIEdpbXBsaWZ5IGFuZCBsb3dl ciB0aHVua3MuICAqLwogICBhbmFseXplX2Z1bmN0aW9ucyAoKTsKIAorICAv KiBFbWl0IGVhcmx5IGRlYnVnIGZvciByZWFjaGFibGUgZnVuY3Rpb25zLCBh bmQgYnkgY29uc2VxdWVuY2UsCisgICAgIGxvY2FsbHkgc2NvcGVkIHN5bWJv bHMuICAqLworICBzdHJ1Y3QgY2dyYXBoX25vZGUgKmNub2RlOworICBGT1Jf RUFDSF9GVU5DVElPTl9XSVRIX0dJTVBMRV9CT0RZIChjbm9kZSkKKyAgICBp ZiAoIWRlY2xfZnVuY3Rpb25fY29udGV4dCAoY25vZGUtPmRlY2wpKQorICAg ICAgKCpkZWJ1Z19ob29rcy0+ZWFybHlfZ2xvYmFsX2RlY2wpIChjbm9kZS0+ ZGVjbCk7CisKKyAgLyogQ2xlYW4gdXAgYW55dGhpbmcgdGhhdCBuZWVkcyBj bGVhbmluZyB1cCBhZnRlciBpbml0aWFsIGRlYnVnCisgICAgIGdlbmVyYXRp b24uICAqLworICAoKmRlYnVnX2hvb2tzLT5lYXJseV9maW5pc2gpICgpOwor CiAgIC8qIEZpbmFsbHkgZHJpdmUgdGhlIHBhc3MgbWFuYWdlci4gICovCiAg IGNvbXBpbGUgKCk7CiAKZGlmZiAtLWdpdCBhL2djYy9jcC9kZWNsMi5jIGIv Z2NjL2NwL2RlY2wyLmMKaW5kZXggNjkxNjg4Yi4uOTY3NDBlOGUgMTAwNjQ0 Ci0tLSBhL2djYy9jcC9kZWNsMi5jCisrKyBiL2djYy9jcC9kZWNsMi5jCkBA IC00MzMzLDExICs0MzMzLDEwIEBAIGR1bXBfdHUgKHZvaWQpCiAgICAgfQog fQogCi0vKiBJc3N1ZSB3YXJuaW5ncyBmb3IgZ2xvYmFscyBpbiBOQU1FX1NQ QUNFICh1bnVzZWQgc3RhdGljcywgZXRjKSBhbmQKLSAgIGdlbmVyYXRlIGRl YnVnIGluZm9ybWF0aW9uIGZvciBzYWlkIGdsb2JhbHMuICAqLworLyogSXNz dWUgd2FybmluZ3MgZm9yIGdsb2JhbHMgaW4gTkFNRV9TUEFDRSAodW51c2Vk IHN0YXRpY3MsIGV0YykuICAqLwogCiBzdGF0aWMgaW50Ci1lbWl0X2RlYnVn X2Zvcl9uYW1lc3BhY2UgKHRyZWUgbmFtZV9zcGFjZSwgdm9pZCogZGF0YSBB VFRSSUJVVEVfVU5VU0VEKQorY2hlY2tfc3RhdGljc19mb3JfbmFtZXNwYWNl ICh0cmVlIG5hbWVfc3BhY2UsIHZvaWQqIGRhdGEgQVRUUklCVVRFX1VOVVNF RCkKIHsKICAgY3BfYmluZGluZ19sZXZlbCAqbGV2ZWwgPSBOQU1FU1BBQ0Vf TEVWRUwgKG5hbWVfc3BhY2UpOwogICB2ZWM8dHJlZSwgdmFfZ2M+ICpzdGF0 aWNzID0gbGV2ZWwtPnN0YXRpY19kZWNsczsKQEAgLTQzNDYsOSArNDM0NSw2 IEBAIGVtaXRfZGVidWdfZm9yX25hbWVzcGFjZSAodHJlZSBuYW1lX3NwYWNl LCB2b2lkKiBkYXRhIEFUVFJJQlVURV9VTlVTRUQpCiAKICAgY2hlY2tfZ2xv YmFsX2RlY2xhcmF0aW9ucyAodmVjLCBsZW4pOwogCi0gIGZvciAodHJlZSB0 ID0gbGV2ZWwtPm5hbWVzOyB0OyB0ID0gVFJFRV9DSEFJTih0KSkKLSAgICBk ZWJ1Z19ob29rcy0+ZWFybHlfZ2xvYmFsX2RlY2wgKHQpOwotCiAgIHJldHVy biAwOwogfQogCkBAIC00NzM3LDE1ICs0NzMzLDEwIEBAIGNfcGFyc2VfZmlu YWxfY2xlYW51cHMgKHZvaWQpCiAgICAgIGdlbmVyYXRlIGluaXRpYWwgZGVi dWcgaW5mb3JtYXRpb24uICAqLwogICB0aW1ldmFyX3N0b3AgKFRWX1BIQVNF X1BBUlNJTkcpOwogICB0aW1ldmFyX3N0YXJ0IChUVl9QSEFTRV9EQkdJTkZP KTsKLSAgd2Fsa19uYW1lc3BhY2VzIChlbWl0X2RlYnVnX2Zvcl9uYW1lc3Bh Y2UsIDApOworICB3YWxrX25hbWVzcGFjZXMgKGNoZWNrX3N0YXRpY3NfZm9y X25hbWVzcGFjZSwgMCk7CiAgIGlmICh2ZWNfc2FmZV9sZW5ndGggKHBlbmRp bmdfc3RhdGljcykgIT0gMCkKLSAgICB7Ci0gICAgICBjaGVja19nbG9iYWxf ZGVjbGFyYXRpb25zIChwZW5kaW5nX3N0YXRpY3MtPmFkZHJlc3MgKCksCi0J CQkJIHBlbmRpbmdfc3RhdGljcy0+bGVuZ3RoICgpKTsKLSAgICAgIGVtaXRf ZGVidWdfZ2xvYmFsX2RlY2xhcmF0aW9ucyAocGVuZGluZ19zdGF0aWNzLT5h ZGRyZXNzICgpLAotCQkJCSAgICAgIHBlbmRpbmdfc3RhdGljcy0+bGVuZ3Ro ICgpLAotCQkJCSAgICAgIEVNSVRfREVCVUdfRUFSTFkpOwotICAgIH0KKyAg ICBjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zIChwZW5kaW5nX3N0YXRpY3Mt PmFkZHJlc3MgKCksCisJCQkgICAgICAgcGVuZGluZ19zdGF0aWNzLT5sZW5n dGggKCkpOwogCiAgIHBlcmZvcm1fZGVmZXJyZWRfbm9leGNlcHRfY2hlY2tz ICgpOwogCmRpZmYgLS1naXQgYS9nY2MvZGJ4b3V0LmMgYi9nY2MvZGJ4b3V0 LmMKaW5kZXggNDMwYTJlYi4uMjAyZWY4YSAxMDA2NDQKLS0tIGEvZ2NjL2Ri eG91dC5jCisrKyBiL2djYy9kYnhvdXQuYwpAQCAtMzU5LDYgKzM1OSw3IEBA IGNvbnN0IHN0cnVjdCBnY2NfZGVidWdfaG9va3MgZGJ4X2RlYnVnX2hvb2tz ID0KICAgZGJ4b3V0X2luaXQsCiAgIGRieG91dF9maW5pc2gsCiAgIGRlYnVn X25vdGhpbmdfdm9pZCwKKyAgZGVidWdfbm90aGluZ192b2lkLAogICBkZWJ1 Z19ub3RoaW5nX2ludF9jaGFyc3RhciwKICAgZGVidWdfbm90aGluZ19pbnRf Y2hhcnN0YXIsCiAgIGRieG91dF9zdGFydF9zb3VyY2VfZmlsZSwKQEAgLTQw MCw2ICs0MDEsNyBAQCBjb25zdCBzdHJ1Y3QgZ2NjX2RlYnVnX2hvb2tzIHhj b2ZmX2RlYnVnX2hvb2tzID0KICAgZGJ4b3V0X2luaXQsCiAgIGRieG91dF9m aW5pc2gsCiAgIGRlYnVnX25vdGhpbmdfdm9pZCwKKyAgZGVidWdfbm90aGlu Z192b2lkLAogICBkZWJ1Z19ub3RoaW5nX2ludF9jaGFyc3RhciwKICAgZGVi dWdfbm90aGluZ19pbnRfY2hhcnN0YXIsCiAgIGRieG91dF9zdGFydF9zb3Vy Y2VfZmlsZSwKZGlmZiAtLWdpdCBhL2djYy9kZWJ1Zy5jIGIvZ2NjL2RlYnVn LmMKaW5kZXggNDQ5ZDNhMS4uZDBlMDBjMCAxMDA2NDQKLS0tIGEvZ2NjL2Rl YnVnLmMKKysrIGIvZ2NjL2RlYnVnLmMKQEAgLTI3LDYgKzI3LDcgQEAgY29u c3Qgc3RydWN0IGdjY19kZWJ1Z19ob29rcyBkb19ub3RoaW5nX2RlYnVnX2hv b2tzID0KIHsKICAgZGVidWdfbm90aGluZ19jaGFyc3RhciwKICAgZGVidWdf bm90aGluZ19jaGFyc3RhciwKKyAgZGVidWdfbm90aGluZ192b2lkLAkJCS8q IGVhcmx5X2ZpbmlzaCAqLwogICBkZWJ1Z19ub3RoaW5nX3ZvaWQsCiAgIGRl YnVnX25vdGhpbmdfaW50X2NoYXJzdGFyLAogICBkZWJ1Z19ub3RoaW5nX2lu dF9jaGFyc3RhciwKZGlmZiAtLWdpdCBhL2djYy9kZWJ1Zy5oIGIvZ2NjL2Rl YnVnLmgKaW5kZXggZjk0ODViYy4uYThkM2YyMyAxMDA2NDQKLS0tIGEvZ2Nj L2RlYnVnLmgKKysrIGIvZ2NjL2RlYnVnLmgKQEAgLTMwLDYgKzMwLDkgQEAg c3RydWN0IGdjY19kZWJ1Z19ob29rcwogICAvKiBPdXRwdXQgZGVidWcgc3lt Ym9scy4gICovCiAgIHZvaWQgKCogZmluaXNoKSAoY29uc3QgY2hhciAqbWFp bl9maWxlbmFtZSk7CiAKKyAgLyogUnVuIGNsZWFudXBzIG5lY2Vzc2FyeSBh ZnRlciBlYXJseSBkZWJ1ZyBnZW5lcmF0aW9uLiAgKi8KKyAgdm9pZCAoKiBl YXJseV9maW5pc2gpICh2b2lkKTsKKwogICAvKiBDYWxsZWQgZnJvbSBjZ3Jh cGhfb3B0aW1pemUgYmVmb3JlIHN0YXJ0aW5nIHRvIGFzc2VtYmxlCiAgICAg IGZ1bmN0aW9ucy92YXJpYWJsZXMvdG9wbGV2ZWwgYXNtcy4gICovCiAgIHZv aWQgKCogYXNzZW1ibHlfc3RhcnQpICh2b2lkKTsKZGlmZiAtLWdpdCBhL2dj Yy9kd2FyZjJvdXQuYyBiL2djYy9kd2FyZjJvdXQuYwppbmRleCAzMzczOGQ5 Li4wMzYxOTRkIDEwMDY0NAotLS0gYS9nY2MvZHdhcmYyb3V0LmMKKysrIGIv Z2NjL2R3YXJmMm91dC5jCkBAIC0xMDYsNiArMTA2LDcgQEAgYWxvbmcgd2l0 aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNp bmNsdWRlICJ0cmVlLWRmYS5oIgogI2luY2x1ZGUgImdkYi9nZGItaW5kZXgu aCIKICNpbmNsdWRlICJydGwtaXRlci5oIgorI2luY2x1ZGUgInByaW50LXRy ZWUuaCIKIAogc3RhdGljIHZvaWQgZHdhcmYyb3V0X3NvdXJjZV9saW5lICh1 bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50LCBib29sKTsKIHN0YXRp YyBydHhfaW5zbiAqbGFzdF92YXJfbG9jYXRpb25faW5zbjsKQEAgLTI0MjQs NiArMjQyNSw3IEBAIGJ1aWxkX2NmYV9hbGlnbmVkX2xvYyAoZHdfY2ZhX2xv Y2F0aW9uICpjZmEsCiAKIHN0YXRpYyB2b2lkIGR3YXJmMm91dF9pbml0IChj b25zdCBjaGFyICopOwogc3RhdGljIHZvaWQgZHdhcmYyb3V0X2ZpbmlzaCAo Y29uc3QgY2hhciAqKTsKK3N0YXRpYyB2b2lkIGR3YXJmMm91dF9lYXJseV9m aW5pc2ggKHZvaWQpOwogc3RhdGljIHZvaWQgZHdhcmYyb3V0X2Fzc2VtYmx5 X3N0YXJ0ICh2b2lkKTsKIHN0YXRpYyB2b2lkIGR3YXJmMm91dF9kZWZpbmUg KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqKTsKIHN0YXRpYyB2b2lkIGR3 YXJmMm91dF91bmRlZiAodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpA QCAtMjQ1MSw2ICsyNDUzLDcgQEAgY29uc3Qgc3RydWN0IGdjY19kZWJ1Z19o b29rcyBkd2FyZjJfZGVidWdfaG9va3MgPQogewogICBkd2FyZjJvdXRfaW5p dCwKICAgZHdhcmYyb3V0X2ZpbmlzaCwKKyAgZHdhcmYyb3V0X2Vhcmx5X2Zp bmlzaCwKICAgZHdhcmYyb3V0X2Fzc2VtYmx5X3N0YXJ0LAogICBkd2FyZjJv dXRfZGVmaW5lLAogICBkd2FyZjJvdXRfdW5kZWYsCkBAIC0yNjExLDYgKzI2 MTQsOSBAQCB0eXBlZGVmIHN0cnVjdCBHVFkoKGNoYWluX2NpcmN1bGFyICgi JWguZGllX3NpYiIpLCBmb3JfdXNlcikpIGRpZV9zdHJ1Y3QgewogICBpbnQg ZGllX21hcms7CiAgIHVuc2lnbmVkIGludCBkZWNsX2lkOwogICBlbnVtIGR3 YXJmX3RhZyBkaWVfdGFnOworICAvKiBObyBvbmUgc2hvdWxkIGRlcGVuZCBv biB0aGlzLCBhcyBpdCBpcyBhIHRlbXBvcmFyeSBkZWJ1Z2dpbmcgYWlkCisg ICAgIHRvIGluZGljYXRlIHRoZSBERUNMIGZvciB3aGljaCB0aGlzIERJRSB3 YXMgY3JlYXRlZCBmb3IuICAqLworICB0cmVlIHRtcF9jcmVhdGVkX2ZvcjsK ICAgLyogRGllIGlzIHVzZWQgYW5kIG11c3Qgbm90IGJlIHBydW5lZCBhcyB1 bnVzZWQuICAqLwogICBCT09MX0JJVEZJRUxEIGRpZV9wZXJlbm5pYWxfcCA6 IDE7CiAgIEJPT0xfQklURklFTEQgY29tZGF0X3R5cGVfcCA6IDE7IC8qIERJ RSBoYXMgYSB0eXBlIHNpZ25hdHVyZSAqLwpAQCAtNDg5MCw2ICs0ODk2LDcg QEAgbmV3X2RpZSAoZW51bSBkd2FyZl90YWcgdGFnX3ZhbHVlLCBkd19kaWVf cmVmIHBhcmVudF9kaWUsIHRyZWUgdCkKICAgZHdfZGllX3JlZiBkaWUgPSBn Z2NfY2xlYXJlZF9hbGxvYzxkaWVfbm9kZT4gKCk7CiAKICAgZGllLT5kaWVf dGFnID0gdGFnX3ZhbHVlOworICBkaWUtPnRtcF9jcmVhdGVkX2ZvciA9IHQ7 CiAKICAgaWYgKGVhcmx5X2R3YXJmX2R1bXBpbmcpCiAgICAgZGllLT5kdW1w ZWRfZWFybHkgPSB0cnVlOwpAQCAtNDkwMCw2ICs0OTA3LDMwIEBAIG5ld19k aWUgKGVudW0gZHdhcmZfdGFnIHRhZ192YWx1ZSwgZHdfZGllX3JlZiBwYXJl bnRfZGllLCB0cmVlIHQpCiAgICAgewogICAgICAgbGltYm9fZGllX25vZGUg KmxpbWJvX25vZGU7CiAKKyAgICAgIC8qIE5vIERJRXMgY3JlYXRlZCBhZnRl ciBlYXJseSBkd2FyZiBzaG91bGQgZW5kIHVwIGluIGxpbWJvLAorCSBiZWNh dXNlIHRoZSBsaW1ibyBsaXN0IHNob3VsZCBub3QgcGVyc2lzdCBwYXN0IExU TworCSBzdHJlYW1pbmcuICAqLworICAgICAgaWYgKHRhZ192YWx1ZSAhPSBE V19UQUdfY29tcGlsZV91bml0CisJICAmJiAhZWFybHlfZHdhcmZfZHVtcGlu ZworCSAgLyogQWxsb3cgbmVzdGVkIGZ1bmN0aW9ucyB0byBsaXZlIGluIGxp bWJvIGJlY2F1c2UgdGhleSB3aWxsCisJICAgICBvbmx5IHRlbXBvcmFyaWx5 IGxpdmUgdGhlcmUsIGFzIGRlY2xzX2Zvcl9zY29wZSB3aWxsIGZpeAorCSAg ICAgdGhlbSB1cC4gICovCisJICAmJiAoVFJFRV9DT0RFICh0KSAhPSBGVU5D VElPTl9ERUNMCisJICAgICAgfHwgIWRlY2xfZnVuY3Rpb25fY29udGV4dCAo dCkpCisJICAvKiBGSVhNRTogQWxsb3cgdHlwZXMgZm9yIG5vdy4gIFdlIGFy ZSBnZXR0aW5nIHNvbWUgaW50ZXJuYWwKKwkgICAgIHRlbXBsYXRlIHR5cGVz IGZyb20gaW5saW5pbmcgKGJ1aWxkaW5nIGxpYnN0ZGMrKykuCisJICAgICBU ZW1wbGF0ZXMgbmVlZCB0byBiZSBsb29rZWQgYXQuICAqLworCSAgJiYgIVRZ UEVfUCAodCkKKwkgIC8qIEZJWE1FOiBBbGxvdyBsYXRlIGxpbWJvIERJRSBj cmVhdGlvbiBmb3IgTFRPLCBlc3BlY2lhbGx5CisJICAgICBpbiB0aGUgbHRy YW5zIHN0YWdlLCBidXQgb25jZSB3ZSBpbXBsZW1lbnQgTFRPIGR3YXJmCisJ ICAgICBzdHJlYW1pbmcsIHdlIHNob3VsZCByZW1vdmUgdGhpcyBleGNlcHRp b24uICAqLworCSAgJiYgIWluX2x0b19wKQorCXsKKwkgIGZwcmludGYgKHN0 ZGVyciwgInN5bWJvbCBlbmRlZCB1cCBpbiBsaW1ibyB0b28gbGF0ZToiKTsK KwkgIGRlYnVnX2dlbmVyaWNfc3RtdCAodCk7CisJICBnY2NfdW5yZWFjaGFi bGUgKCk7CisJfQorCiAgICAgICBsaW1ib19ub2RlID0gZ2djX2NsZWFyZWRf YWxsb2M8bGltYm9fZGllX25vZGU+ICgpOwogICAgICAgbGltYm9fbm9kZS0+ ZGllID0gZGllOwogICAgICAgbGltYm9fbm9kZS0+Y3JlYXRlZF9mb3IgPSB0 OwpAQCAtNTM5OSw2ICs1NDMwLDEzIEBAIHByaW50X2RpZSAoZHdfZGllX3Jl ZiBkaWUsIEZJTEUgKm91dGZpbGUpCiAJZnByaW50ZiAob3V0ZmlsZSwgIjog JXMiLCBuYW1lKTsKICAgICAgIGZwdXRjICgnKScsIG91dGZpbGUpOwogICAg IH0KKyAgaWYgKGRpZS0+dG1wX2NyZWF0ZWRfZm9yCisgICAgICAmJiBERUNM X1AgKGRpZS0+dG1wX2NyZWF0ZWRfZm9yKQorICAgICAgJiYgQ09ERV9DT05U QUlOU19TVFJVQ1QKKyAgICAgICAgICAgKFRSRUVfQ09ERSAoZGllLT50bXBf Y3JlYXRlZF9mb3IpLCBUU19ERUNMX1dJVEhfVklTKQorICAgICAgJiYgREVD TF9BU1NFTUJMRVJfTkFNRV9TRVRfUCAoZGllLT50bXBfY3JlYXRlZF9mb3Ip KQorICAgIGZwcmludGYgKG91dGZpbGUsICIobWFuZ2xlOiAlcykiLAorCSAg ICAgSURFTlRJRklFUl9QT0lOVEVSIChERUNMX0FTU0VNQkxFUl9OQU1FIChk aWUtPnRtcF9jcmVhdGVkX2ZvcikpKTsKICAgZnB1dGMgKCdcbicsIG91dGZp bGUpOwogICBwcmludF9zcGFjZXMgKG91dGZpbGUpOwogICBmcHJpbnRmIChv dXRmaWxlLCAiICBhYmJyZXYgaWQ6ICVsdSIsIGRpZS0+ZGllX2FiYnJldik7 CkBAIC0xODI3NCw3ICsxODMxMiw4IEBAIGR3YXJmMm91dF9hYnN0cmFjdF9m dW5jdGlvbiAodHJlZSBkZWNsKQogICBjdXJyZW50X2Z1bmN0aW9uX2RlY2wg PSBkZWNsOwogCiAgIHdhc19hYnN0cmFjdCA9IERFQ0xfQUJTVFJBQ1RfUCAo ZGVjbCk7Ci0gIHNldF9kZWNsX2Fic3RyYWN0X2ZsYWdzIChkZWNsLCAxKTsK KyAgaWYgKCF3YXNfYWJzdHJhY3QpCisgICAgc2V0X2RlY2xfYWJzdHJhY3Rf ZmxhZ3MgKGRlY2wsIDEpOwogICBkd2FyZjJvdXRfZGVjbCAoZGVjbCk7CiAg IGlmICghIHdhc19hYnN0cmFjdCkKICAgICBzZXRfZGVjbF9hYnN0cmFjdF9m bGFncyAoZGVjbCwgMCk7CkBAIC0xODQwMywyNCArMTg0NDIsOTMgQEAgZ2Vu X3N1YnByb2dyYW1fZGllICh0cmVlIGRlY2wsIGR3X2RpZV9yZWYgY29udGV4 dF9kaWUpCiAgIHRyZWUgb3JpZ2luID0gZGVjbF91bHRpbWF0ZV9vcmlnaW4g KGRlY2wpOwogICBkd19kaWVfcmVmIHN1YnJfZGllOwogICBkd19kaWVfcmVm IG9sZF9kaWUgPSBsb29rdXBfZGVjbF9kaWUgKGRlY2wpOworCisgIC8qIFRo aXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yIGRp ZmZlcmVudCBzdGFnZXMgb2YKKyAgICAgdGhlIGRlYnVnIHByb2Nlc3MuICBG b3IgZXhhbXBsZSwgZm9yIGZ1bmMoKSBpbiB0aGlzIGNvZGU6CisKKwluYW1l c3BhY2UgUworCXsKKwkgIHZvaWQgZnVuYygpIHsgLi4uIH0KKwl9CisKKyAg ICAgLi4ud2UgZ2V0IGNhbGxlZCA0IHRpbWVzLiAgVHdpY2UgaW4gZWFybHkg ZGVidWcgYW5kIHR3aWNlIGluCisgICAgIGxhdGUgZGVidWc6CisKKyAgICAg RWFybHkgZGVidWcKKyAgICAgLS0tLS0tLS0tLS0KKworICAgICAgIDEuIE9u Y2Ugd2hpbGUgZ2VuZXJhdGluZyBmdW5jKCkgd2l0aGluIHRoZSBuYW1lc3Bh Y2UuICBUaGlzIGlzCisgICAgICAgICAgdGhlIGRlY2xhcmF0aW9uLiAgVGhl IGRlY2xhcmF0aW9uIGJpdCBiZWxvdyBpcyBzZXQsIGFzIHRoZQorICAgICAg ICAgIGNvbnRleHQgaXMgdGhlIG5hbWVzcGFjZS4KKworCSAgQSBuZXcgRElF IHdpbGwgYmUgZ2VuZXJhdGVkIHdpdGggRFdfQVRfZGVjbGFyYXRpb24gc2V0 LgorCisgICAgICAgMi4gT25jZSBmb3IgZnVuYygpIGl0c2VsZi4gIFRoaXMg aXMgdGhlIHNwZWNpZmljYXRpb24uICBUaGUKKyAgICAgICAgICBkZWNsYXJh dGlvbiBiaXQgYmVsb3cgaXMgY2xlYXIgYXMgdGhlIGNvbnRleHQgaXMgdGhl IENVLgorCisJICBXZSB3aWxsIHVzZSB0aGUgY2FjaGVkIERJRSBmcm9tICgx KSB0byBjcmVhdGUgYSBuZXcgRElFIHdpdGgKKwkgIERXX0FUX3NwZWNpZmlj YXRpb24gcG9pbnRpbmcgdG8gdGhlIGRlY2xhcmF0aW9uIGluICgxKS4KKwor ICAgICBMYXRlIGRlYnVnIHZpYSByZXN0X29mX2hhbmRsZV9maW5hbCgpCisg ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor ICAgICAgIDMuIE9uY2UgZ2VuZXJhdGluZyBmdW5jKCkgd2l0aGluIHRoZSBu YW1lc3BhY2UuICBUaGlzIGlzIGFsc28gdGhlCisgICAgICAgICAgZGVjbGFy YXRpb24sIGFzIGluICgxKSwgYnV0IHRoaXMgdGltZSB3ZSB3aWxsIGVhcmx5 IGV4aXQgYmVsb3cKKyAgICAgICAgICBhcyB3ZSBoYXZlIGEgY2FjaGVkIERJ RSBhbmQgYSBkZWNsYXJhdGlvbiBuZWVkcyBubyBhZGRpdGlvbmFsCisgICAg ICAgICAgYW5ub3RhdGlvbnMgKG5vIGxvY2F0aW9ucyksIGFzIHRoZSBzb3Vy Y2UgZGVjbGFyYXRpb24gbGluZQorICAgICAgICAgIGluZm8gaXMgZW5vdWdo LgorCisgICAgICAgNC4gT25jZSBmb3IgZnVuYygpIGl0c2VsZi4gIEFzIGlu ICgyKSwgdGhpcyBpcyB0aGUgc3BlY2lmaWNhdGlvbiwKKyAgICAgICAgICBi dXQgdGhpcyB0aW1lIHdlIHdpbGwgcmUtdXNlIHRoZSBjYWNoZWQgRElFLCBh bmQganVzdCBhbm5vdGF0ZQorICAgICAgICAgIGl0IHdpdGggdGhlIGxvY2F0 aW9uIGluZm9ybWF0aW9uIHRoYXQgc2hvdWxkIG5vdyBiZSBhdmFpbGFibGUu CisKKyAgICAgRm9yIHNvbWV0aGluZyB3aXRob3V0IG5hbWVzcGFjZXMsIGJ1 dCB3aXRoIGFic3RyYWN0IGluc3RhbmNlcywgd2UKKyAgICAgYXJlIGFsc28g Y2FsbGVkIGEgbXVsdGlwbGUgdGltZXM6CisKKyAgICAgICAgY2xhc3MgQmFz ZQorCXsKKwlwdWJsaWM6CisJICBCYXNlICgpOwkgIC8vIGNvbnN0cnVjdG9y IGRlY2xhcmF0aW9uICgxKQorCX07CisKKwlCYXNlOjpCYXNlICgpIHsgfSAv LyBjb25zdHJ1Y3RvciBzcGVjaWZpY2F0aW9uICgyKQorCisgICAgRWFybHkg ZGVidWcKKyAgICAtLS0tLS0tLS0tLQorCisgICAgICAgMS4gT25jZSBmb3Ig dGhlIEJhc2UoKSBjb25zdHJ1Y3RvciBieSB2aXJ0dWUgb2YgaXQgYmVpbmcg YQorICAgICAgICAgIG1lbWJlciBvZiB0aGUgQmFzZSBjbGFzcy4gIFRoaXMg aXMgZG9uZSB2aWEKKyAgICAgICAgICByZXN0X29mX3R5cGVfY29tcGlsYXRp b24uCisKKwkgIFRoaXMgaXMgYSBkZWNsYXJhdGlvbiwgc28gYSBuZXcgRElF IHdpbGwgYmUgY3JlYXRlZCB3aXRoCisJICBEV19BVF9kZWNsYXJhdGlvbi4K KworICAgICAgIDIuIE9uY2UgZm9yIHRoZSBCYXNlKCkgY29uc3RydWN0b3Ig ZGVmaW5pdGlvbiwgYnV0IHRoaXMgdGltZQorICAgICAgICAgIHdoaWxlIGdl bmVyYXRpbmcgdGhlIGFic3RyYWN0IGluc3RhbmNlIG9mIHRoZSBiYXNlCisg ICAgICAgICAgY29uc3RydWN0b3IgKF9fYmFzZV9jdG9yKSB3aGljaCBpcyBi ZWluZyBnZW5lcmF0ZWQgdmlhIGVhcmx5CisgICAgICAgICAgZGVidWcgb2Yg cmVhY2hhYmxlIGZ1bmN0aW9ucy4KKworCSAgRXZlbiB0aG91Z2ggd2UgaGF2 ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIHRoZSBkZWNsYXJhdGlvbiAoMSksCisJ ICB3ZSB3aWxsIGNyZWF0ZSBhIERXX0FUX3NwZWNpZmljYXRpb24gb2YgdGhl IGRlY2xhcmF0aW9uIERJRQorCSAgaW4gKDEpLgorCisgICAgICAgMy4gT25j ZSBmb3IgdGhlIF9fYmFzZV9jdG9yIGl0c2VsZiwgYnV0IHRoaXMgdGltZSwg d2UgZ2VuZXJhdGUKKyAgICAgICAgICBhbiBEV19BVF9hYnN0cmFjdF9vcmln aW4gdmVyc2lvbiBvZiB0aGUgRFdfQVRfc3BlY2lmaWNhdGlvbiBpbgorCSAg KDIpLgorCisgICAgTGF0ZSBkZWJ1ZyB2aWEgcmVzdF9vZl9oYW5kbGVfZmlu YWwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor CisgICAgICAgNC4gT25lIGZpbmFsIHRpbWUgZm9yIHRoZSBfX2Jhc2VfY3Rv ciAod2hpY2ggd2lsbCBoYXZlIGEgY2FjaGVkCisgICAgICAgICAgRElFIHdp dGggRFdfQVRfYWJzdHJhY3Rfb3JpZ2luIGNyZWF0ZWQgaW4gKDMpLiAgVGhp cyB0aW1lLAorICAgICAgICAgIHdlIHdpbGwganVzdCBhbm5vdGF0ZSB0aGUg bG9jYXRpb24gaW5mb3JtYXRpb24gbm93CisgICAgICAgICAgYXZhaWxhYmxl LgorICAqLwogICBpbnQgZGVjbGFyYXRpb24gPSAoY3VycmVudF9mdW5jdGlv bl9kZWNsICE9IGRlY2wKIAkJICAgICB8fCBjbGFzc19vcl9uYW1lc3BhY2Vf c2NvcGVfcCAoY29udGV4dF9kaWUpKTsKIAogICBwcmVtYXJrX3VzZWRfdHlw ZXMgKERFQ0xfU1RSVUNUX0ZVTkNUSU9OIChkZWNsKSk7CiAKLSAgLyogSXQg aXMgcG9zc2libGUgdG8gaGF2ZSBib3RoIERFQ0xfQUJTVFJBQ1RfUCBhbmQg REVDTEFSQVRJT04gYmUgdHJ1ZSBpZiB3ZQotICAgICBzdGFydGVkIHRvIGdl bmVyYXRlIHRoZSBhYnN0cmFjdCBpbnN0YW5jZSBvZiBhbiBpbmxpbmUsIGRl Y2lkZWQgdG8gb3V0cHV0Ci0gICAgIGl0cyBjb250YWluaW5nIGNsYXNzLCBh bmQgcHJvY2VlZGVkIHRvIGVtaXQgdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSBp bmxpbmUKLSAgICAgZnJvbSB0aGUgbWVtYmVyIGxpc3QgZm9yIHRoZSBjbGFz cy4gIElmIHNvLCBERUNMQVJBVElPTiB0YWtlcyBwcmlvcml0eTsKLSAgICAg d2UnbGwgZ2V0IGJhY2sgdG8gdGhlIGFic3RyYWN0IGluc3RhbmNlIHdoZW4g ZG9uZSB3aXRoIHRoZSBjbGFzcy4gICovCi0KLSAgLyogVGhlIGNsYXNzLXNj b3BlIGRlY2xhcmF0aW9uIERJRSBtdXN0IGJlIHRoZSBwcmltYXJ5IERJRS4g ICovCi0gIGlmIChvcmlnaW4gJiYgZGVjbGFyYXRpb24gJiYgY2xhc3Nfb3Jf bmFtZXNwYWNlX3Njb3BlX3AgKGNvbnRleHRfZGllKSkKLSAgICB7Ci0gICAg ICBvcmlnaW4gPSBOVUxMOwotICAgICAgZ2NjX2Fzc2VydCAoIW9sZF9kaWUp OwotICAgIH0KLQogICAvKiBOb3cgdGhhdCB0aGUgQysrIGZyb250IGVuZCBs YXppbHkgZGVjbGFyZXMgYXJ0aWZpY2lhbCBtZW1iZXIgZm5zLCB3ZQogICAg ICBtaWdodCBuZWVkIHRvIHJldHJvZml0IHRoZSBkZWNsYXJhdGlvbiBpbnRv IGl0cyBjbGFzcy4gICovCiAgIGlmICghZGVjbGFyYXRpb24gJiYgIW9yaWdp biAmJiAhb2xkX2RpZQpAQCAtMTg0NDAsMTQgKzE4NTQ4LDIzIEBAIGdlbl9z dWJwcm9ncmFtX2RpZSAodHJlZSBkZWNsLCBkd19kaWVfcmVmIGNvbnRleHRf ZGllKQogICAgICAgaWYgKG9sZF9kaWUgJiYgb2xkX2RpZS0+ZGllX3BhcmVu dCA9PSBOVUxMKQogCWFkZF9jaGlsZF9kaWUgKGNvbnRleHRfZGllLCBvbGRf ZGllKTsKIAotICAgICAgc3Vicl9kaWUgPSBuZXdfZGllIChEV19UQUdfc3Vi cHJvZ3JhbSwgY29udGV4dF9kaWUsIGRlY2wpOwotICAgICAgYWRkX2Fic3Ry YWN0X29yaWdpbl9hdHRyaWJ1dGUgKHN1YnJfZGllLCBvcmlnaW4pOwotICAg ICAgLyogIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBjb2RlIGZvciBhIGNs b25lZCBmdW5jdGlvbiBpcy4KLQkgIExldCdzIGVtaXQgbGlua2FnZSBuYW1l IGF0dHJpYnV0ZSBmb3IgaXQuICBUaGlzIGhlbHBzCi0JICBkZWJ1Z2dlcnMg dG8gZS5nLCBzZXQgYnJlYWtwb2ludHMgaW50bwotCSAgY29uc3RydWN0b3Jz L2Rlc3RydWN0b3JzIHdoZW4gdGhlIHVzZXIgYXNrcyAiYnJlYWsKLQkgIEs6 OksiLiAgKi8KLSAgICAgIGFkZF9saW5rYWdlX25hbWUgKHN1YnJfZGllLCBk ZWNsKTsKKyAgICAgIGlmIChvbGRfZGllICYmIGdldF9BVF9yZWYgKG9sZF9k aWUsIERXX0FUX2Fic3RyYWN0X29yaWdpbikpCisJeworCSAgLyogSWYgd2Ug aGF2ZSBhIERXX0FUX2Fic3RyYWN0X29yaWdpbiB3ZSBoYXZlIGEgd29ya2lu ZworCSAgICAgY2FjaGVkIHZlcnNpb24uICAqLworCSAgc3Vicl9kaWUgPSBv bGRfZGllOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBzdWJyX2RpZSA9IG5l d19kaWUgKERXX1RBR19zdWJwcm9ncmFtLCBjb250ZXh0X2RpZSwgZGVjbCk7 CisJICBhZGRfYWJzdHJhY3Rfb3JpZ2luX2F0dHJpYnV0ZSAoc3Vicl9kaWUs IG9yaWdpbik7CisJICAvKiAgVGhpcyBpcyB3aGVyZSB0aGUgYWN0dWFsIGNv ZGUgZm9yIGEgY2xvbmVkIGZ1bmN0aW9uIGlzLgorCSAgICAgIExldCdzIGVt aXQgbGlua2FnZSBuYW1lIGF0dHJpYnV0ZSBmb3IgaXQuICBUaGlzIGhlbHBz CisJICAgICAgZGVidWdnZXJzIHRvIGUuZywgc2V0IGJyZWFrcG9pbnRzIGlu dG8KKwkgICAgICBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgd2hlbiB0aGUg dXNlciBhc2tzICJicmVhaworCSAgICAgIEs6OksiLiAgKi8KKwkgIGFkZF9s aW5rYWdlX25hbWUgKHN1YnJfZGllLCBkZWNsKTsKKwl9CiAgICAgfQogICAv KiBBIGNhY2hlZCBjb3B5LCBwb3NzaWJseSBmcm9tIGVhcmx5IGR3YXJmIGdl bmVyYXRpb24uICBSZXVzZSBhcwogICAgICBtdWNoIGFzIHBvc3NpYmxlLiAg Ki8KQEAgLTE4NDk2LDI0ICsxODYxMywxMyBAQCBnZW5fc3VicHJvZ3JhbV9k aWUgKHRyZWUgZGVjbCwgZHdfZGllX3JlZiBjb250ZXh0X2RpZSkKIAl7CiAJ ICBzdWJyX2RpZSA9IG9sZF9kaWU7CiAKLQkgIC8qID8/PyBIbW1tLCBlYXJs eSBkd2FyZiBnZW5lcmF0aW9uIGhhcHBlbmVkIGVhcmxpZXIsIHNvIG5vCi0J ICAgICBzZW5zZSBpbiByZW1vdmluZyB0aGUgcGFyYW1ldGVycy4gIExldCdz IGtlZXAgdGhlbSBhbmQKLQkgICAgIGF1Z21lbnQgdGhlbSB3aXRoIGxvY2F0 aW9uIGluZm9ybWF0aW9uIGxhdGVyLiAgKi8KLSNpZiAwCi0JICAvKiBDbGVh ciBvdXQgdGhlIGRlY2xhcmF0aW9uIGF0dHJpYnV0ZSBhbmQgdGhlIGZvcm1h bCBwYXJhbWV0ZXJzLgotCSAgICAgRG8gbm90IHJlbW92ZSBhbGwgY2hpbGRy ZW4sIGJlY2F1c2UgaXQgaXMgcG9zc2libGUgdGhhdCB0aGlzCi0JICAgICBk ZWNsYXJhdGlvbiBkaWUgd2FzIGZvcmNlZCB1c2luZyBmb3JjZV9kZWNsX2Rp ZSgpLiBJbiBzdWNoCi0JICAgICBjYXNlcyBkaWUgdGhhdCBmb3JjZWQgZGVj bGFyYXRpb24gZGllIChlLmcuIFRBR19pbXBvcnRlZF9tb2R1bGUpCi0JICAg ICBpcyBvbmUgb2YgdGhlIGNoaWxkcmVuIHRoYXQgd2UgZG8gbm90IHdhbnQg dG8gcmVtb3ZlLiAgKi8KLQkgIHJlbW92ZV9BVCAoc3Vicl9kaWUsIERXX0FU X2RlY2xhcmF0aW9uKTsKLQkgIHJlbW92ZV9BVCAoc3Vicl9kaWUsIERXX0FU X29iamVjdF9wb2ludGVyKTsKLQkgIHJlbW92ZV9jaGlsZF9UQUcgKHN1YnJf ZGllLCBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcik7Ci0jZWxzZQotCSAgLyog V2UgZG9uJ3QgbmVlZCB0aGUgRFdfQVRfZGVjbGFyYXRpb24gdGhlIHNlY29u ZCBvciB0aGlyZAotCSAgICAgdGltZSBhcm91bmQgYW55aG93LiAgKi8KKwkg IC8qIENsZWFyIG91dCB0aGUgZGVjbGFyYXRpb24gYXR0cmlidXRlLCBidXQg bGVhdmUgdGhlCisJICAgICBwYXJhbWV0ZXJzIHNvIHRoZXkgY2FuIGJlIGF1 Z21lbnRlZCB3aXRoIGxvY2F0aW9uCisJICAgICBpbmZvcm1hdGlvbiBsYXRl ci4gICovCiAJICByZW1vdmVfQVQgKHN1YnJfZGllLCBEV19BVF9kZWNsYXJh dGlvbik7Ci0jZW5kaWYKIAl9CisgICAgICAvKiBNYWtlIGEgc3BlY2lmaWNh dGlvbiBwb2ludGluZyB0byB0aGUgcHJldmlvdXNseSBidWlsdAorCSBkZWNs YXJhdGlvbi4gICovCiAgICAgICBlbHNlCiAJewogCSAgc3Vicl9kaWUgPSBu ZXdfZGllIChEV19UQUdfc3VicHJvZ3JhbSwgY29udGV4dF9kaWUsIGRlY2wp OwpAQCAtMjEzMTksNyArMjE0MjUsMTIgQEAgc3RhdGljIHZvaWQKIGR3YXJm Mm91dF90eXBlX2RlY2wgKHRyZWUgZGVjbCwgaW50IGxvY2FsKQogewogICBp ZiAoIWxvY2FsKQotICAgIGR3YXJmMm91dF9kZWNsIChkZWNsKTsKKyAgICB7 CisgICAgICBib29sIHQgPSBlYXJseV9kd2FyZl9kdW1waW5nOworICAgICAg ZWFybHlfZHdhcmZfZHVtcGluZyA9IHRydWU7CisgICAgICBkd2FyZjJvdXRf ZGVjbCAoZGVjbCk7CisgICAgICBlYXJseV9kd2FyZl9kdW1waW5nID0gdDsK KyAgICB9CiB9CiAKIC8qIE91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3Ig aW1wb3J0ZWQgbW9kdWxlIG9yIGRlY2wgREVDTC4KQEAgLTIxNjM2LDcgKzIx NzQ3LDEwIEBAIGR3YXJmMm91dF9kZWNsICh0cmVlIGRlY2wpCiAgIC8qIElm IHdlIGVhcmx5IGNyZWF0ZWQgYSBESUUsIG1ha2Ugc3VyZSBpdCBkaWRuJ3Qg Z2V0IHJlLWNyZWF0ZWQgYnkKICAgICAgbWlzdGFrZS4gICovCiAgIGlmIChl YXJseV9kaWUgJiYgZWFybHlfZGllLT5kdW1wZWRfZWFybHkpCi0gICAgZ2Nj X2Fzc2VydCAoZWFybHlfZGllID09IGRpZSk7CisgICAgZ2NjX2Fzc2VydCAo ZWFybHlfZGllID09IGRpZQorCQkvKiBXZSBjYW4gaGF2ZSBhIGRpZmZlcmlu ZyBESUUgaWYgYW5kIG9ubHkgaWYsIHRoZQorCQkgICBuZXcgb25lIGlzIGEg c3BlY2lmaWNhdGlvbiBvZiB0aGUgb2xkIG9uZS4gICovCisJCXx8IGdldF9B VF9yZWYgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbikgPT0gZWFybHlfZGll KTsKICNlbmRpZgogICByZXR1cm4gZGllOwogfQpAQCAtMjE3MzMsNiArMjE4 NDcsOSBAQCBsb29rdXBfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVfbmFt ZSkKIHsKICAgc3RydWN0IGR3YXJmX2ZpbGVfZGF0YSAqIGNyZWF0ZWQ7CiAK KyAgaWYgKCFmaWxlX25hbWUpCisgICAgcmV0dXJuIE5VTEw7CisKICAgZHdh cmZfZmlsZV9kYXRhICoqc2xvdAogICAgID0gZmlsZV90YWJsZS0+ZmluZF9z bG90X3dpdGhfaGFzaCAoZmlsZV9uYW1lLCBodGFiX2hhc2hfc3RyaW5nIChm aWxlX25hbWUpLAogCQkJCSAgICAgICBJTlNFUlQpOwpAQCAtMjQ3MjYsMTAg KzI0ODQzLDIwIEBAIG9wdGltaXplX2xvY2F0aW9uX2xpc3RzIChkd19kaWVf cmVmIGRpZSkKIHN0YXRpYyB2b2lkCiBkd2FyZjJvdXRfZmluaXNoIChjb25z dCBjaGFyICpmaWxlbmFtZSkKIHsKLSAgbGltYm9fZGllX25vZGUgKm5vZGUs ICpuZXh0X25vZGU7CiAgIGNvbWRhdF90eXBlX25vZGUgKmN0bm9kZTsKICAg ZHdfZGllX3JlZiBtYWluX2NvbXBfdW5pdF9kaWU7CiAKKyAgLyogSWYgdGhl IGxpbWJvIGxpc3QgaGFzIGFueXRoaW5nLCBpdCBzaG91bGQgYmUgdGhpbmdz IHRoYXQgd2VyZQorICAgICBjcmVhdGVkIGFmdGVyIHRoZSBjb21waWxhdGlv biBwcm9wZXIuICBBbnl0aGluZyBmcm9tIHRoZSBlYXJseQorICAgICBkd2Fy ZiBwYXNzLCBzaG91bGQgaGF2ZSBwYXJlbnRzIGFuZCBzaG91bGQgbmV2ZXIg YmUgaW4gdGhlIGxpbWJvCisgICAgIGxpc3QgdGhpcyBsYXRlLiAgKi8KKyAg Zm9yIChsaW1ib19kaWVfbm9kZSAqbm9kZSA9IGxpbWJvX2RpZV9saXN0OyBu b2RlOyBub2RlID0gbm9kZS0+bmV4dCkKKyAgICBnY2NfYXNzZXJ0IChub2Rl LT5kaWUtPmRpZV90YWcgPT0gRFdfVEFHX2NvbXBpbGVfdW5pdAorCQl8fCAh bm9kZS0+ZGllLT5kdW1wZWRfZWFybHkpOworCisgIC8qIEZsdXNoIG91dCBh bnkgbGF0ZWNvbWVycyB0byB0aGUgbGltYm8gcGFydHkuICAqLworICBkd2Fy ZjJvdXRfZWFybHlfZmluaXNoKCk7CisKICAgLyogUENIIG1pZ2h0IHJlc3Vs dCBpbiBEV19BVF9wcm9kdWNlciBzdHJpbmcgYmVpbmcgcmVzdG9yZWQgZnJv bSB0aGUKICAgICAgaGVhZGVyIGNvbXBpbGF0aW9uLCBzbyBhbHdheXMgZmls bCBpdCB3aXRoIGVtcHR5IHN0cmluZyBpbml0aWFsbHkKICAgICAgYW5kIG92 ZXJ3cml0ZSBvbmx5IGhlcmUuICAqLwpAQCAtMjQ3NTQsNTUgKzI0ODgxLDYg QEAgZHdhcmYyb3V0X2ZpbmlzaCAoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJ YWRkX2NvbXBfZGlyX2F0dHJpYnV0ZSAoY29tcF91bml0X2RpZSAoKSk7CiAg ICAgfQogCi0gIC8qIFRyYXZlcnNlIHRoZSBsaW1ibyBkaWUgbGlzdCwgYW5k IGFkZCBwYXJlbnQvY2hpbGQgbGlua3MuICBUaGUgb25seQotICAgICBkaWVz IHdpdGhvdXQgcGFyZW50cyB0aGF0IHNob3VsZCBiZSBoZXJlIGFyZSBjb25j cmV0ZSBpbnN0YW5jZXMgb2YKLSAgICAgaW5saW5lIGZ1bmN0aW9ucywgYW5k IHRoZSBjb21wX3VuaXRfZGllLiAgV2UgY2FuIGlnbm9yZSB0aGUgY29tcF91 bml0X2RpZS4KLSAgICAgRm9yIGNvbmNyZXRlIGluc3RhbmNlcywgd2UgY2Fu IGdldCB0aGUgcGFyZW50IGRpZSBmcm9tIHRoZSBhYnN0cmFjdAotICAgICBp bnN0YW5jZS4gICovCi0gIGZvciAobm9kZSA9IGxpbWJvX2RpZV9saXN0OyBu b2RlOyBub2RlID0gbmV4dF9ub2RlKQotICAgIHsKLSAgICAgIGR3X2RpZV9y ZWYgZGllID0gbm9kZS0+ZGllOwotICAgICAgbmV4dF9ub2RlID0gbm9kZS0+ bmV4dDsKLQotICAgICAgaWYgKGRpZS0+ZGllX3BhcmVudCA9PSBOVUxMKQot CXsKLQkgIGR3X2RpZV9yZWYgb3JpZ2luID0gZ2V0X0FUX3JlZiAoZGllLCBE V19BVF9hYnN0cmFjdF9vcmlnaW4pOwotCi0JICBpZiAob3JpZ2luICYmIG9y aWdpbi0+ZGllX3BhcmVudCkKLQkgICAgYWRkX2NoaWxkX2RpZSAob3JpZ2lu LT5kaWVfcGFyZW50LCBkaWUpOwotCSAgZWxzZSBpZiAoaXNfY3VfZGllIChk aWUpKQotCSAgICA7Ci0JICBlbHNlIGlmIChzZWVuX2Vycm9yICgpKQotCSAg ICAvKiBJdCdzIE9LIHRvIGJlIGNvbmZ1c2VkIGJ5IGVycm9ycyBpbiB0aGUg aW5wdXQuICAqLwotCSAgICBhZGRfY2hpbGRfZGllIChjb21wX3VuaXRfZGll ICgpLCBkaWUpOwotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgLyogSW4gY2Vy dGFpbiBzaXR1YXRpb25zLCB0aGUgbGV4aWNhbCBibG9jayBjb250YWluaW5n IGEKLQkJIG5lc3RlZCBmdW5jdGlvbiBjYW4gYmUgb3B0aW1pemVkIGF3YXks IHdoaWNoIHJlc3VsdHMKLQkJIGluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gZGll IGJlaW5nIG9ycGhhbmVkLiAgTGlrZXdpc2UKLQkJIHdpdGggdGhlIHJldHVy biB0eXBlIG9mIHRoYXQgbmVzdGVkIGZ1bmN0aW9uLiAgRm9yY2UKLQkJIHRo aXMgdG8gYmUgYSBjaGlsZCBvZiB0aGUgY29udGFpbmluZyBmdW5jdGlvbi4K LQotCQkgSXQgbWF5IGhhcHBlbiB0aGF0IGV2ZW4gdGhlIGNvbnRhaW5pbmcg ZnVuY3Rpb24gZ290IGZ1bGx5Ci0JCSBpbmxpbmVkIGFuZCBvcHRpbWl6ZWQg b3V0LiAgSW4gdGhhdCBjYXNlIHdlIGFyZSBsb3N0IGFuZAotCQkgYXNzaWdu IHRoZSBlbXB0eSBjaGlsZC4gIFRoaXMgc2hvdWxkIG5vdCBiZSBiaWcgaXNz dWUgYXMKLQkJIHRoZSBmdW5jdGlvbiBpcyBsaWtlbHkgdW5yZWFjaGFibGUg dG9vLiAgKi8KLQkgICAgICBnY2NfYXNzZXJ0IChub2RlLT5jcmVhdGVkX2Zv cik7Ci0KLQkgICAgICBpZiAoREVDTF9QIChub2RlLT5jcmVhdGVkX2Zvcikp Ci0JCW9yaWdpbiA9IGdldF9jb250ZXh0X2RpZSAoREVDTF9DT05URVhUIChu b2RlLT5jcmVhdGVkX2ZvcikpOwotCSAgICAgIGVsc2UgaWYgKFRZUEVfUCAo bm9kZS0+Y3JlYXRlZF9mb3IpKQotCQlvcmlnaW4gPSBzY29wZV9kaWVfZm9y IChub2RlLT5jcmVhdGVkX2ZvciwgY29tcF91bml0X2RpZSAoKSk7Ci0JICAg ICAgZWxzZQotCQlvcmlnaW4gPSBjb21wX3VuaXRfZGllICgpOwotCi0JICAg ICAgYWRkX2NoaWxkX2RpZSAob3JpZ2luLCBkaWUpOwotCSAgICB9Ci0JfQot ICAgIH0KLQotICBsaW1ib19kaWVfbGlzdCA9IE5VTEw7Ci0KICNpZiBFTkFC TEVfQVNTRVJUX0NIRUNLSU5HCiAgIHsKICAgICBkd19kaWVfcmVmIGRpZSA9 IGNvbXBfdW5pdF9kaWUgKCksIGM7CkBAIC0yNDg1MCw2ICsyNDkyOCw3IEBA IGR3YXJmMm91dF9maW5pc2ggKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogICAv KiBUcmF2ZXJzZSB0aGUgRElFJ3MgYW5kIGFkZCBhZGQgc2libGluZyBhdHRy aWJ1dGVzIHRvIHRob3NlIERJRSdzCiAgICAgIHRoYXQgaGF2ZSBjaGlsZHJl bi4gICovCiAgIGFkZF9zaWJsaW5nX2F0dHJpYnV0ZXMgKGNvbXBfdW5pdF9k aWUgKCkpOworICBsaW1ib19kaWVfbm9kZSAqbm9kZTsKICAgZm9yIChub2Rl ID0gbGltYm9fZGllX2xpc3Q7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0KQog ICAgIGFkZF9zaWJsaW5nX2F0dHJpYnV0ZXMgKG5vZGUtPmRpZSk7CiAgIGZv ciAoY3Rub2RlID0gY29tZGF0X3R5cGVfbGlzdDsgY3Rub2RlICE9IE5VTEw7 IGN0bm9kZSA9IGN0bm9kZS0+bmV4dCkKQEAgLTI1MTExLDYgKzI1MTkwLDY2 IEBAIGR3YXJmMm91dF9maW5pc2ggKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQog ICAgIG91dHB1dF9pbmRpcmVjdF9zdHJpbmdzICgpOwogfQogCisvKiBQZXJm b3JtIGFueSBjbGVhbnVwcyBuZWVkZWQgYWZ0ZXIgdGhlIGVhcmx5IGRlYnVn IGdlbmVyYXRpb24gcGFzcworICAgaGFzIHJ1bi4gICovCisKK3N0YXRpYyB2 b2lkCitkd2FyZjJvdXRfZWFybHlfZmluaXNoICh2b2lkKQoreworICAvKiBU cmF2ZXJzZSB0aGUgbGltYm8gZGllIGxpc3QsIGFuZCBhZGQgcGFyZW50L2No aWxkIGxpbmtzLiAgVGhlIG9ubHkKKyAgICAgZGllcyB3aXRob3V0IHBhcmVu dHMgdGhhdCBzaG91bGQgYmUgaGVyZSBhcmUgY29uY3JldGUgaW5zdGFuY2Vz IG9mCisgICAgIGlubGluZSBmdW5jdGlvbnMsIGFuZCB0aGUgY29tcF91bml0 X2RpZS4gIFdlIGNhbiBpZ25vcmUgdGhlIGNvbXBfdW5pdF9kaWUuCisgICAg IEZvciBjb25jcmV0ZSBpbnN0YW5jZXMsIHdlIGNhbiBnZXQgdGhlIHBhcmVu dCBkaWUgZnJvbSB0aGUgYWJzdHJhY3QKKyAgICAgaW5zdGFuY2UuCisKKyAg ICAgVGhlIHBvaW50IGhlcmUgaXMgdG8gZmx1c2ggb3V0IHRoZSBsaW1ibyBs aXN0IHNvIHRoYXQgaXQgaXMgZW1wdHkKKyAgICAgYW5kIHdlIGRvbid0IG5l ZWQgdG8gc3RyZWFtIGl0IGZvciBMVE8uICAqLworICBsaW1ib19kaWVfbm9k ZSAqbm9kZSwgKm5leHRfbm9kZTsKKyAgZm9yIChub2RlID0gbGltYm9fZGll X2xpc3Q7IG5vZGU7IG5vZGUgPSBuZXh0X25vZGUpCisgICAgeworICAgICAg ZHdfZGllX3JlZiBkaWUgPSBub2RlLT5kaWU7CisgICAgICBuZXh0X25vZGUg PSBub2RlLT5uZXh0OworCisgICAgICBpZiAoZGllLT5kaWVfcGFyZW50ID09 IE5VTEwpCisJeworCSAgZHdfZGllX3JlZiBvcmlnaW4gPSBnZXRfQVRfcmVm IChkaWUsIERXX0FUX2Fic3RyYWN0X29yaWdpbik7CisKKwkgIGlmIChvcmln aW4gJiYgb3JpZ2luLT5kaWVfcGFyZW50KQorCSAgICBhZGRfY2hpbGRfZGll IChvcmlnaW4tPmRpZV9wYXJlbnQsIGRpZSk7CisJICBlbHNlIGlmIChpc19j dV9kaWUgKGRpZSkpCisJICAgIDsKKwkgIGVsc2UgaWYgKHNlZW5fZXJyb3Ig KCkpCisJICAgIC8qIEl0J3MgT0sgdG8gYmUgY29uZnVzZWQgYnkgZXJyb3Jz IGluIHRoZSBpbnB1dC4gICovCisJICAgIGFkZF9jaGlsZF9kaWUgKGNvbXBf dW5pdF9kaWUgKCksIGRpZSk7CisJICBlbHNlCisJICAgIHsKKwkgICAgICAv KiBJbiBjZXJ0YWluIHNpdHVhdGlvbnMsIHRoZSBsZXhpY2FsIGJsb2NrIGNv bnRhaW5pbmcgYQorCQkgbmVzdGVkIGZ1bmN0aW9uIGNhbiBiZSBvcHRpbWl6 ZWQgYXdheSwgd2hpY2ggcmVzdWx0cworCQkgaW4gdGhlIG5lc3RlZCBmdW5j dGlvbiBkaWUgYmVpbmcgb3JwaGFuZWQuICBMaWtld2lzZQorCQkgd2l0aCB0 aGUgcmV0dXJuIHR5cGUgb2YgdGhhdCBuZXN0ZWQgZnVuY3Rpb24uICBGb3Jj ZQorCQkgdGhpcyB0byBiZSBhIGNoaWxkIG9mIHRoZSBjb250YWluaW5nIGZ1 bmN0aW9uLgorCisJCSBJdCBtYXkgaGFwcGVuIHRoYXQgZXZlbiB0aGUgY29u dGFpbmluZyBmdW5jdGlvbiBnb3QgZnVsbHkKKwkJIGlubGluZWQgYW5kIG9w dGltaXplZCBvdXQuICBJbiB0aGF0IGNhc2Ugd2UgYXJlIGxvc3QgYW5kCisJ CSBhc3NpZ24gdGhlIGVtcHR5IGNoaWxkLiAgVGhpcyBzaG91bGQgbm90IGJl IGJpZyBpc3N1ZSBhcworCQkgdGhlIGZ1bmN0aW9uIGlzIGxpa2VseSB1bnJl YWNoYWJsZSB0b28uICAqLworCSAgICAgIGdjY19hc3NlcnQgKG5vZGUtPmNy ZWF0ZWRfZm9yKTsKKworCSAgICAgIGlmIChERUNMX1AgKG5vZGUtPmNyZWF0 ZWRfZm9yKSkKKwkJb3JpZ2luID0gZ2V0X2NvbnRleHRfZGllIChERUNMX0NP TlRFWFQgKG5vZGUtPmNyZWF0ZWRfZm9yKSk7CisJICAgICAgZWxzZSBpZiAo VFlQRV9QIChub2RlLT5jcmVhdGVkX2ZvcikpCisJCW9yaWdpbiA9IHNjb3Bl X2RpZV9mb3IgKG5vZGUtPmNyZWF0ZWRfZm9yLCBjb21wX3VuaXRfZGllICgp KTsKKwkgICAgICBlbHNlCisJCW9yaWdpbiA9IGNvbXBfdW5pdF9kaWUgKCk7 CisKKwkgICAgICBhZGRfY2hpbGRfZGllIChvcmlnaW4sIGRpZSk7CisJICAg IH0KKwl9CisgICAgfQorCisgIGxpbWJvX2RpZV9saXN0ID0gTlVMTDsKK30K KwogLyogUmVzZXQgYWxsIHN0YXRlIHdpdGhpbiBkd2FyZjJvdXQuYyBzbyB0 aGF0IHdlIGNhbiByZXJ1biB0aGUgY29tcGlsZXIKICAgIHdpdGhpbiB0aGUg c2FtZSBwcm9jZXNzLiAgRm9yIHVzZSBieSB0b3BsZXY6OmZpbmFsaXplLiAg Ki8KIApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZjk1LWxhbmcuYyBiL2dj Yy9mb3J0cmFuL2Y5NS1sYW5nLmMKaW5kZXggM2QyMTdkNC4uNGQ0MWI0ZSAx MDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZjk1LWxhbmcuYworKysgYi9nY2Mv Zm9ydHJhbi9mOTUtbGFuZy5jCkBAIC0yNDIsOCArMjQyLDcgQEAgZ2ZjX2Jl X3BhcnNlX2ZpbGUgKHZvaWQpCiAgICAgIGRpYWdub3N0aWNzIGJlZm9yZSBn ZmNfZmluaXNoKCkuICAqLwogICBnZmNfZGlhZ25vc3RpY3NfZmluaXNoICgp OwogCi0gIC8qIERvIHRoZSBkZWJ1ZyBkYW5jZS4gICovCi0gIGdsb2JhbF9k ZWNsX3Byb2Nlc3NpbmdfYW5kX2Vhcmx5X2RlYnVnICgpOworICBnbG9iYWxf ZGVjbF9wcm9jZXNzaW5nICgpOwogfQogCiAKZGlmZiAtLWdpdCBhL2djYy9m b3J0cmFuL3RyYW5zLWRlY2wuYyBiL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wu YwppbmRleCAxZmEzMDYwLi5lZmQ0Y2Q0IDEwMDY0NAotLS0gYS9nY2MvZm9y dHJhbi90cmFucy1kZWNsLmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVj bC5jCkBAIC00NzA5LDcgKzQ3MDksNiBAQCBnZmNfZW1pdF9wYXJhbWV0ZXJf ZGVidWdfaW5mbyAoZ2ZjX3N5bWJvbCAqc3ltKQogCQkJCQkgICAgICBUUkVF X1RZUEUgKGRlY2wpLAogCQkJCQkgICAgICBzeW0tPmF0dHIuZGltZW5zaW9u LAogCQkJCQkgICAgICBmYWxzZSwgZmFsc2UpOwotICBkZWJ1Z19ob29rcy0+ ZWFybHlfZ2xvYmFsX2RlY2wgKGRlY2wpOwogfQogCiAKZGlmZiAtLWdpdCBh L2djYy9nby9nby1nY2MuY2MgYi9nY2MvZ28vZ28tZ2NjLmNjCmluZGV4IDIx NWM0ZTUuLmM5YzUwZGQgMTAwNjQ0Ci0tLSBhL2djYy9nby9nby1nY2MuY2MK KysrIGIvZ2NjL2dvL2dvLWdjYy5jYwpAQCAtMzAwMCw4ICszMDAwLDYgQEAg R2NjX2JhY2tlbmQ6OndyaXRlX2dsb2JhbF9kZWZpbml0aW9ucygKIAogICB3 cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyhkZWZzLCBpKTsKIAotICBlbWl0 X2RlYnVnX2dsb2JhbF9kZWNsYXJhdGlvbnMgKGRlZnMsIGksIEVNSVRfREVC VUdfRUFSTFkpOwotCiAgIC8qID8/IENhbiB3ZSBsZWF2ZSB0aGlzIGNhbGwg aGVyZSwgdGh1cyBnZXR0aW5nIGNhbGxlZCBiZWZvcmUKICAgICAgZmluYWxp emVfY29tcGlsYXRpb25fdW5pdD8KIApkaWZmIC0tZ2l0IGEvZ2NjL2phdmEv Y2xhc3MuYyBiL2djYy9qYXZhL2NsYXNzLmMKaW5kZXggYmVhNzcyMC4uM2Q4 NGE1NyAxMDA2NDQKLS0tIGEvZ2NjL2phdmEvY2xhc3MuYworKysgYi9nY2Mv amF2YS9jbGFzcy5jCkBAIC0xMTYsMTAgKzExNiw2IEBAIHN0YXRpYyBHVFko KCkpIHZlYzx0cmVlLCB2YV9nYz4gKnJlZ2lzdGVyZWRfY2xhc3M7CiAgICBj dXJyZW50bHkgYmVpbmcgY29tcGlsZWQuICAqLwogc3RhdGljIEdUWSgoKSkg dHJlZSB0aGlzX2NsYXNzZG9sbGFyOwogCi0vKiBBIGxpc3Qgb2Ygc3RhdGlj IGNsYXNzIGZpZWxkcy4gIFRoaXMgaXMgdG8gZW1pdCBwcm9wZXIgZGVidWcK LSAgIGluZm8gZm9yIHRoZW0uICAqLwotdmVjPHRyZWUsIHZhX2djPiAqcGVu ZGluZ19zdGF0aWNfZmllbGRzOwotCiAvKiBSZXR1cm4gdGhlIG5vZGUgdGhh dCBtb3N0IGNsb3NlbHkgcmVwcmVzZW50cyB0aGUgY2xhc3Mgd2hvc2UgbmFt ZQogICAgaXMgSURFTlQuICBTdGFydCB0aGUgc2VhcmNoIGZyb20gTk9ERSAo Zm9sbG93ZWQgYnkgaXRzIHNpYmxpbmdzKS4KICAgIFJldHVybiBOVUxMIGlm IGFuIGFwcHJvcHJpYXRlIG5vZGUgZG9lcyBub3QgZXhpc3QuICAqLwpAQCAt ODg4LDggKzg4NCw2IEBAIGFkZF9maWVsZCAodHJlZSBrbGFzcywgdHJlZSBu YW1lLCB0cmVlIGZpZWxkX3R5cGUsIGludCBmbGFncykKICAgICAgIC8qIENv bnNpZGVyZWQgZXh0ZXJuYWwgdW5sZXNzIHdlIGFyZSBjb21waWxpbmcgaXQg aW50byB0aGlzCiAJIG9iamVjdCBmaWxlLiAgKi8KICAgICAgIERFQ0xfRVhU RVJOQUwgKGZpZWxkKSA9IChpc19jb21waWxlZF9jbGFzcyAoa2xhc3MpICE9 IDIpOwotICAgICAgaWYgKCFERUNMX0VYVEVSTkFMIChmaWVsZCkpCi0JdmVj X3NhZmVfcHVzaCAocGVuZGluZ19zdGF0aWNfZmllbGRzLCBmaWVsZCk7CiAg ICAgfQogCiAgIHJldHVybiBmaWVsZDsKZGlmZiAtLWdpdCBhL2djYy9qYXZh L2RlY2wuYyBiL2djYy9qYXZhL2RlY2wuYwppbmRleCBmYmQwOWEzLi43ZjAy YjRlIDEwMDY0NAotLS0gYS9nY2MvamF2YS9kZWNsLmMKKysrIGIvZ2NjL2ph dmEvZGVjbC5jCkBAIC0xOTY0LDExICsxOTY0LDcgQEAgamF2YV9tYXJrX2Ns YXNzX2xvY2FsICh0cmVlIGtsYXNzKQogCiAgIGZvciAodCA9IFRZUEVfRklF TERTIChrbGFzcyk7IHQgOyB0ID0gREVDTF9DSEFJTiAodCkpCiAgICAgaWYg KEZJRUxEX1NUQVRJQyAodCkpCi0gICAgICB7Ci0JaWYgKERFQ0xfRVhURVJO QUwgKHQpKQotCSAgdmVjX3NhZmVfcHVzaCAocGVuZGluZ19zdGF0aWNfZmll bGRzLCB0KTsKLQlqYXZhX21hcmtfZGVjbF9sb2NhbCAodCk7Ci0gICAgICB9 CisgICAgICBqYXZhX21hcmtfZGVjbF9sb2NhbCAodCk7CiAKICAgZm9yICh0 ID0gVFlQRV9NRVRIT0RTIChrbGFzcyk7IHQgOyB0ID0gREVDTF9DSEFJTiAo dCkpCiAgICAgaWYgKCFNRVRIT0RfQUJTVFJBQ1QgKHQpKQpkaWZmIC0tZ2l0 IGEvZ2NjL2phdmEvamF2YS10cmVlLmggYi9nY2MvamF2YS9qYXZhLXRyZWUu aAppbmRleCA0ZWE4ZmViLi4xNDI2NjFmIDEwMDY0NAotLS0gYS9nY2MvamF2 YS9qYXZhLXRyZWUuaAorKysgYi9nY2MvamF2YS9qYXZhLXRyZWUuaApAQCAt MTE5NCw4ICsxMTk0LDYgQEAgZXh0ZXJuIHZvaWQgcmV3cml0ZV9yZWZsZWN0 aW9uX2luZGV4ZXMgKHZvaWQgKik7CiAKIGludCBjeHhfa2V5d29yZF9wIChj b25zdCBjaGFyICpuYW1lLCBpbnQgbGVuZ3RoKTsKIAotZXh0ZXJuIEdUWSgo KSkgdmVjPHRyZWUsIHZhX2djPiAqcGVuZGluZ19zdGF0aWNfZmllbGRzOwot CiAjZGVmaW5lIERFQ0xfRklOQUwoREVDTCkgREVDTF9MQU5HX0ZMQUdfMyAo REVDTCkKIAogLyogQWNjZXNzIGZsYWdzIGV0YyBmb3IgYSBtZXRob2QgKGEg RlVOQ1RJT05fREVDTCk6ICovCmRpZmYgLS1naXQgYS9nY2MvamF2YS9qY2Yt cGFyc2UuYyBiL2djYy9qYXZhL2pjZi1wYXJzZS5jCmluZGV4IGUxNjNkMDMu LmE2NWM1YzcgMTAwNjQ0Ci0tLSBhL2djYy9qYXZhL2pjZi1wYXJzZS5jCisr KyBiL2djYy9qYXZhL2pjZi1wYXJzZS5jCkBAIC0xOTkzLDEyICsxOTkzLDgg QEAgamF2YV9wYXJzZV9maWxlICh2b2lkKQogICBqYXZhX2VtaXRfc3RhdGlj X2NvbnN0cnVjdG9yICgpOwogICBnY2NfYXNzZXJ0IChnbG9iYWxfYmluZGlu Z3NfcCAoKSk7CiAKLSAgLyogRG8gZmluYWwgcHJvY2Vzc2luZyBvbiBnbG9i YWxzIGFuZCBlbWl0IGVhcmx5IGRlYnVnIGluZm9ybWF0aW9uLiAgKi8KLSAg dHJlZSAqdmVjID0gdmVjX3NhZmVfYWRkcmVzcyAocGVuZGluZ19zdGF0aWNf ZmllbGRzKTsKLSAgaW50IGxlbiA9IHZlY19zYWZlX2xlbmd0aCAocGVuZGlu Z19zdGF0aWNfZmllbGRzKTsKLSAgZ2xvYmFsX2RlY2xfcHJvY2Vzc2luZ19h bmRfZWFybHlfZGVidWcgKCk7Ci0gIGVtaXRfZGVidWdfZ2xvYmFsX2RlY2xh cmF0aW9ucyAodmVjLCBsZW4sIEVNSVRfREVCVUdfRUFSTFkpOwotICB2ZWNf ZnJlZSAocGVuZGluZ19zdGF0aWNfZmllbGRzKTsKKyAgLyogRG8gZmluYWwg cHJvY2Vzc2luZyBvbiBnbG9iYWxzLiAgKi8KKyAgZ2xvYmFsX2RlY2xfcHJv Y2Vzc2luZyAoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9nY2MvbGFuZ2hvb2tz LmMgYi9nY2MvbGFuZ2hvb2tzLmMKaW5kZXggMWMwZWRjMS4uYzAzNTQ5MCAx MDA2NDQKLS0tIGEvZ2NjL2xhbmdob29rcy5jCisrKyBiL2djYy9sYW5naG9v a3MuYwpAQCAtMzA2LDEyICszMDYsMTIgQEAgbGhkX2RlY2xfb2tfZm9yX3Np YmNhbGwgKGNvbnN0X3RyZWUgZGVjbCBBVFRSSUJVVEVfVU5VU0VEKQogICBy ZXR1cm4gdHJ1ZTsKIH0KIAotLyogR2VuZXJpYyBnbG9iYWwgZGVjbGFyYXRp b24gcHJvY2Vzc2luZyBhbmQgZWFybHkgZGVidWcgZ2VuZXJhdGlvbi4KLSAg IFRoaXMgaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHRoZSBmcm9udC1lbmRz IGF0IHRoZSBlbmQgb2YgcGFyc2luZy4KLSAgIEMvQysrIGRvIHRoZWlyIG93 biB0aGluZywgYnV0IG90aGVyIGZyb250LWVuZHMgbWF5IGNhbGwgdGhpcy4g ICovCisvKiBHZW5lcmljIGdsb2JhbCBkZWNsYXJhdGlvbiBwcm9jZXNzaW5n LiAgVGhpcyBpcyBtZWFudCB0byBiZSBjYWxsZWQKKyAgIGJ5IHRoZSBmcm9u dC1lbmRzIGF0IHRoZSBlbmQgb2YgcGFyc2luZy4gIEMvQysrIGRvIHRoZWly IG93biB0aGluZywKKyAgIGJ1dCBvdGhlciBmcm9udC1lbmRzIG1heSBjYWxs IHRoaXMuICAqLwogCiB2b2lkCi1nbG9iYWxfZGVjbF9wcm9jZXNzaW5nX2Fu ZF9lYXJseV9kZWJ1ZyAodm9pZCkKK2dsb2JhbF9kZWNsX3Byb2Nlc3Npbmcg KHZvaWQpCiB7CiAgIHRyZWUgZ2xvYmFscywgZGVjbCwgKnZlYzsKICAgaW50 IGxlbiwgaTsKQEAgLTMzNiwxMCArMzM2LDYgQEAgZ2xvYmFsX2RlY2xfcHJv Y2Vzc2luZ19hbmRfZWFybHlfZGVidWcgKHZvaWQpCiAgIGNoZWNrX2dsb2Jh bF9kZWNsYXJhdGlvbnMgKHZlYywgbGVuKTsKICAgdGltZXZhcl9zdG9wIChU Vl9QSEFTRV9ERUZFUlJFRCk7CiAKLSAgdGltZXZhcl9zdGFydCAoVFZfUEhB U0VfREJHSU5GTyk7Ci0gIGVtaXRfZGVidWdfZ2xvYmFsX2RlY2xhcmF0aW9u cyAodmVjLCBsZW4sIEVNSVRfREVCVUdfRUFSTFkpOwotICB0aW1ldmFyX3N0 b3AgKFRWX1BIQVNFX0RCR0lORk8pOwotCiAgIHRpbWV2YXJfc3RhcnQgKFRW X1BIQVNFX1BBUlNJTkcpOwogICBmcmVlICh2ZWMpOwogfQpkaWZmIC0tZ2l0 IGEvZ2NjL3NkYm91dC5jIGIvZ2NjL3NkYm91dC5jCmluZGV4IGQ3YjJkNmIu LjQzYjhjZjIgMTAwNjQ0Ci0tLSBhL2djYy9zZGJvdXQuYworKysgYi9nY2Mv c2Rib3V0LmMKQEAgLTI3OSw2ICsyNzksNyBAQCBjb25zdCBzdHJ1Y3QgZ2Nj X2RlYnVnX2hvb2tzIHNkYl9kZWJ1Z19ob29rcyA9CiB7CiAgIHNkYm91dF9p bml0LAkJCSAgICAgICAgIC8qIGluaXQgKi8KICAgc2Rib3V0X2ZpbmlzaCwJ CSAgICAgICAgIC8qIGZpbmlzaCAqLworICBkZWJ1Z19ub3RoaW5nX3ZvaWQs CQkJIC8qIGVhcmx5X2ZpbmlzaCAqLwogICBkZWJ1Z19ub3RoaW5nX3ZvaWQs CQkJIC8qIGFzc2VtYmx5X3N0YXJ0ICovCiAgIGRlYnVnX25vdGhpbmdfaW50 X2NoYXJzdGFyLAkgICAgICAgICAvKiBkZWZpbmUgKi8KICAgZGVidWdfbm90 aGluZ19pbnRfY2hhcnN0YXIsCSAgICAgICAgIC8qIHVuZGVmICovCmRpZmYg LS1naXQgYS9nY2MvdG9wbGV2LmMgYi9nY2MvdG9wbGV2LmMKaW5kZXggNDJh MmNkYy4uNDg5N2Q1NyAxMDA2NDQKLS0tIGEvZ2NjL3RvcGxldi5jCisrKyBi L2djYy90b3BsZXYuYwpAQCAtNTM4LDEzICs1MzgsMTEgQEAgY2hlY2tfZ2xv YmFsX2RlY2xhcmF0aW9ucyAodHJlZSAqdiwgaW50IGxlbikKICAgICBjaGVj a19nbG9iYWxfZGVjbGFyYXRpb25fMSAodltpXSk7CiB9CiAKLS8qIEVtaXQg ZGVidWdnaW5nIGluZm9ybWF0aW9uIGZvciBhbGwgZ2xvYmFsIGRlY2xhcmF0 aW9ucyBpbiBWRUMuCi0gICBXSEVOIGlzIGVpdGhlciBFTUlUX0RFQlVHX0VB UkxZIG9yIEVNSVRfREVCVUdfTEFURSBkZXBlbmRpbmcgb24gaWYKLSAgIHdl IGFyZSBnZW5lcmF0aW5nIGVhcmx5IGRlYnVnIChhdCB0aGUgZW5kIG9mIHBh cnNpbmcpLCBvciB0aGUgbGF0ZQotICAgKHBvc3QgY29tcGlsYXRpb24pIHZl cnNpb24uICAqLworLyogRW1pdCBsYXRlIGRlYnVnZ2luZyBpbmZvcm1hdGlv biAocG9zdCBjb21waWxhdGlvbikgZm9yIGFsbCBnbG9iYWwKKyAgIGRlY2xh cmF0aW9ucyBpbiBWRUMuICAqLwogCiB2b2lkCi1lbWl0X2RlYnVnX2dsb2Jh bF9kZWNsYXJhdGlvbnMgKHRyZWUgKnZlYywgaW50IGxlbiwgZW51bSBlbWl0 X2RlYnVnIHdoZW4pCitlbWl0X2RlYnVnX2dsb2JhbF9kZWNsYXJhdGlvbnMg KHRyZWUgKnZlYywgaW50IGxlbikKIHsKICAgaW50IGk7CiAKQEAgLTU1NCwx NCArNTUyLDcgQEAgZW1pdF9kZWJ1Z19nbG9iYWxfZGVjbGFyYXRpb25zICh0 cmVlICp2ZWMsIGludCBsZW4sIGVudW0gZW1pdF9kZWJ1ZyB3aGVuKQogCiAg IHRpbWV2YXJfcHVzaCAoVFZfU1lNT1VUKTsKICAgZm9yIChpID0gMDsgaSA8 IGxlbjsgaSsrKQotICAgIHsKLSAgICAgIGlmICh3aGVuID09IEVNSVRfREVC VUdfRUFSTFkpCi0JZGVidWdfaG9va3MtPmVhcmx5X2dsb2JhbF9kZWNsICh2 ZWNbaV0pOwotICAgICAgZWxzZSBpZiAod2hlbiA9PSBFTUlUX0RFQlVHX0xB VEUpCi0JZGVidWdfaG9va3MtPmxhdGVfZ2xvYmFsX2RlY2wgKHZlY1tpXSk7 Ci0gICAgICBlbHNlCi0JZ2NjX3VucmVhY2hhYmxlICgpOwotICAgIH0KKyAg ICBkZWJ1Z19ob29rcy0+bGF0ZV9nbG9iYWxfZGVjbCAodmVjW2ldKTsKICAg dGltZXZhcl9wb3AgKFRWX1NZTU9VVCk7CiB9CiAKQEAgLTIxMzYsNiArMjEy NywyMSBAQCB0b3BsZXY6Om1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikK ICAgaWYgKHZlcnNpb25fZmxhZykKICAgICBwcmludF92ZXJzaW9uIChzdGRl cnIsICIiKTsKIAorICAvKiBGSVhNRTogVGVtcG9yYXJ5IGRlYnVnZ2luZyBh aWQgdG8ga25vdyB3aGljaCBMVE8gcGhhc2Ugd2UgYXJlIGluCisgICAgIHdp dGhvdXQgaGF2aW5nIHRvIHBhc3MgLXYgdG8gdGhlIGRyaXZlciBhbmQgYWxs IGl0cyB2ZXJib3NpdHkuICAqLworICBpZiAoMCkKKyAgICB7CisgICAgICBm cHJpbnRmKHN0ZGVyciwgIk1BSU46IGNjMSpcbiIpOworICAgICAgaWYgKGZs YWdfbHRvKQorCWZwcmludGYoc3RkZXJyLCAiXHRNQUlOOiBmbGFnX2x0b1xu Iik7CisgICAgICBpZiAoaW5fbHRvX3ApCisJZnByaW50ZihzdGRlcnIsICJc dE1BSU46IGluX2x0b19wXG4iKTsKKyAgICAgIGlmIChmbGFnX3dwYSkKKwlm cHJpbnRmKHN0ZGVyciwgIlx0TUFJTjogZmxhZ193cGFcbiIpOworICAgICAg aWYgKGZsYWdfbHRyYW5zKQorCWZwcmludGYoc3RkZXJyLCAiXHRNQUlOOiBm bGFnX2x0cmFuc1xuIik7CisgICAgfQorCiAgIGlmIChoZWxwX2ZsYWcpCiAg ICAgcHJpbnRfcGx1Z2luc19oZWxwIChzdGRlcnIsICIiKTsKIApkaWZmIC0t Z2l0IGEvZ2NjL3RvcGxldi5oIGIvZ2NjL3RvcGxldi5oCmluZGV4IGNlODM1 MzkuLjVkNDBhNGEgMTAwNjQ0Ci0tLSBhL2djYy90b3BsZXYuaAorKysgYi9n Y2MvdG9wbGV2LmgKQEAgLTYwLDEzICs2MCw5IEBAIGV4dGVybiBib29sIHdy YXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zICh0cmVlICosIGludCk7CiBleHRl cm4gdm9pZCBjaGVja19nbG9iYWxfZGVjbGFyYXRpb25fMSAodHJlZSk7CiBl eHRlcm4gdm9pZCBjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zICh0cmVlICos IGludCk7CiAKLWVudW0gZW1pdF9kZWJ1ZyB7Ci0gIEVNSVRfREVCVUdfRUFS TFksCi0gIEVNSVRfREVCVUdfTEFURQotfTsKLWV4dGVybiB2b2lkIGVtaXRf ZGVidWdfZ2xvYmFsX2RlY2xhcmF0aW9ucyAodHJlZSAqLCBpbnQsIGVudW0g ZW1pdF9kZWJ1Zyk7CitleHRlcm4gdm9pZCBlbWl0X2RlYnVnX2dsb2JhbF9k ZWNsYXJhdGlvbnMgKHRyZWUgKiwgaW50KTsKIAotZXh0ZXJuIHZvaWQgZ2xv YmFsX2RlY2xfcHJvY2Vzc2luZ19hbmRfZWFybHlfZGVidWcgKHZvaWQpOwor ZXh0ZXJuIHZvaWQgZ2xvYmFsX2RlY2xfcHJvY2Vzc2luZyAodm9pZCk7CiAK IGV4dGVybiB2b2lkIGR1bXBfbWVtb3J5X3JlcG9ydCAoYm9vbCk7CiBleHRl cm4gdm9pZCBkdW1wX3Byb2ZpbGVfcmVwb3J0ICh2b2lkKTsKZGlmZiAtLWdp dCBhL2djYy92bXNkYmdvdXQuYyBiL2djYy92bXNkYmdvdXQuYwppbmRleCA1 Y2I2NmJjLi42ZGE0OGViIDEwMDY0NAotLS0gYS9nY2Mvdm1zZGJnb3V0LmMK KysrIGIvZ2NjL3Ztc2RiZ291dC5jCkBAIC0xNzksNiArMTc5LDcgQEAgc3Rh dGljIHZvaWQgdm1zZGJnb3V0X2Fic3RyYWN0X2Z1bmN0aW9uICh0cmVlKTsK IGNvbnN0IHN0cnVjdCBnY2NfZGVidWdfaG9va3Mgdm1zZGJnX2RlYnVnX2hv b2tzCiA9IHt2bXNkYmdvdXRfaW5pdCwKICAgIHZtc2RiZ291dF9maW5pc2gs CisgICBkZWJ1Z19ub3RoaW5nX3ZvaWQsCiAgICB2bXNkYmdvdXRfYXNzZW1i bHlfc3RhcnQsCiAgICB2bXNkYmdvdXRfZGVmaW5lLAogICAgdm1zZGJnb3V0 X3VuZGVmLAo= --------------090508060300040605090903--