From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3102 invoked by alias); 5 Sep 2014 02:38:17 -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 3090 invoked by uid 89); 5 Sep 2014 02:38:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS,UNSUBSCRIBE_BODY autolearn=no 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, 05 Sep 2014 02:38:10 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s852c8vj011770 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 4 Sep 2014 22:38:09 -0400 Received: from reynosa.quesejoda.com (vpn-51-93.rdu2.redhat.com [10.10.51.93]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s852c6Ja001359; Thu, 4 Sep 2014 22:38:06 -0400 Message-ID: <5409220E.6070100@redhat.com> Date: Fri, 05 Sep 2014 02:38:00 -0000 From: Aldy Hernandez User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0 MIME-Version: 1.0 To: Richard Biener CC: Jason Merrill , gcc-patches Subject: Re: [debug-early] reuse variable DIEs and fix their context References: <53FD45A7.4000804@redhat.com> <53FF6840.9030505@redhat.com> <53FF6E61.6030507@redhat.com> <540755E5.7060602@redhat.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------030004060808090800070909" X-SW-Source: 2014-09/txt/msg00441.txt.bz2 This is a multi-part message in MIME format. --------------030004060808090800070909 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2307 On 09/04/14 03:42, Richard Biener wrote: > On Wed, Sep 3, 2014 at 7:54 PM, Aldy Hernandez wrote: > Flow-wise I still want to move hand-off to the cgraph code to toplev.c, > out from the FEs final_write_gloabals hook: > > /* This must also call finalize_compilation_unit. */ > lang_hooks.decls.final_write_globals (); > > that would make clearer how control flows. Neat. I like it. > I'd also rather split the hook into two ... (and call the 2nd non-early > phase hook from where we output the code). What does that phase > output for global decls anyway? This is also a very good idea, and it makes the intent clearer. > Otherwise looks like a good incremental improvement to me. Since we're pretty much on the same page, I've committed this revision you just looked at, so we can talk about the changes you mention above separately, namely: a) Divorcing final_write_globals and finalize_compilation. b) Splitting the global_decl hook into two. So this is what I have in mind (patch attached). I'd like to split LANG_HOOKS_WRITE_GLOBALS in favor of LANG_HOOKS_{EARLY,LATE}_WRITE_GLOBALS, as well as splitting the global_decl debug hook into {early,late}_global_decl. I've commented things throughout to make it very clear what we're getting at. I chose to dispense with the old names to make it very clear what the hook should do, and to make sure I didn't miss any places. Toplev will now look much cleaner: + /* Emit early debugging information as well as globals. */ + timevar_start (TV_PHASE_DEFERRED); + lang_hooks.decls.early_write_globals (); + timevar_stop (TV_PHASE_DEFERRED); + + /* We're done parsing; proceed to optimize and emit assembly. */ + timevar_start (TV_PHASE_OPT_GEN); + symtab->finalize_compilation_unit (); + timevar_stop (TV_PHASE_OPT_GEN); + + /* Amend any debugging information generated previously. */ + timevar_start (TV_PHASE_DBGINFO); + lang_hooks.decls.late_write_globals (); + timevar_stop (TV_PHASE_DBGINFO); Preeeeety... if I do say so myself. The attached patch is untested, and will fail miserably on anything but C (lto, c++, etc). But it shows how I'd like to approach this. Would you bless this approach, so I can continue with the other languages and LTO? As usual, thanks for your feedback. Aldy --------------030004060808090800070909 Content-Type: text/plain; charset=us-ascii; name="curr" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="curr" Content-length: 37072 ZGlmZiAtLWdpdCBhL2djYy9hZGEvZ2NjLWludGVyZmFjZS9taXNjLmMgYi9n Y2MvYWRhL2djYy1pbnRlcmZhY2UvbWlzYy5jCmluZGV4IDI0MGNhNDQuLmZk ODhlNDQgMTAwNjQ0Ci0tLSBhL2djYy9hZGEvZ2NjLWludGVyZmFjZS9taXNj LmMKKysrIGIvZ2NjL2FkYS9nY2MtaW50ZXJmYWNlL21pc2MuYwpAQCAtODk0 LDggKzg5NCw5IEBAIGduYXRfaW5pdF90cyAodm9pZCkKICNkZWZpbmUgTEFO R19IT09LU19HRVRERUNMUwkJbGhkX3JldHVybl9udWxsX3RyZWVfdgogI3Vu ZGVmICBMQU5HX0hPT0tTX1BVU0hERUNMCiAjZGVmaW5lIExBTkdfSE9PS1Nf UFVTSERFQ0wJCWduYXRfcmV0dXJuX3RyZWUKLSN1bmRlZiAgTEFOR19IT09L U19XUklURV9HTE9CQUxTCi0jZGVmaW5lIExBTkdfSE9PS1NfV1JJVEVfR0xP QkFMUwlnbmF0X3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMKKy8qIEZJWE1F OiBBZGQgQWRhIHN1cHBvcnQuICAqLworI3VuZGVmICBMQU5HX0hPT0tTX0VB UkxZX1dSSVRFX0dMT0JBTFMKKyNkZWZpbmUgTEFOR19IT09LU19FQVJMWV9X UklURV9HTE9CQUxTCWduYXRfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucwog I3VuZGVmICBMQU5HX0hPT0tTX0dFVF9BTElBU19TRVQKICNkZWZpbmUgTEFO R19IT09LU19HRVRfQUxJQVNfU0VUCWduYXRfZ2V0X2FsaWFzX3NldAogI3Vu ZGVmICBMQU5HX0hPT0tTX1BSSU5UX0RFQ0wKZGlmZiAtLWdpdCBhL2djYy9j L2MtZGVjbC5jIGIvZ2NjL2MvYy1kZWNsLmMKaW5kZXggMWUwOTQwNC4uNzll YTg5YyAxMDA2NDQKLS0tIGEvZ2NjL2MvYy1kZWNsLmMKKysrIGIvZ2NjL2Mv Yy1kZWNsLmMKQEAgLTEwMzEwLDcgKzEwMzEwLDcgQEAgY193cml0ZV9nbG9i YWxfZGVjbGFyYXRpb25zXzEgKHRyZWUgZ2xvYmFscykKICAgZm9yIChkZWNs ID0gZ2xvYmFsczsgZGVjbDsgZGVjbCA9IERFQ0xfQ0hBSU4gKGRlY2wpKQog ICAgIHsKICAgICAgIGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbl8xIChkZWNs KTsKLSAgICAgIGRlYnVnX2hvb2tzLT5nbG9iYWxfZGVjbCAoZGVjbCwgLypl YXJseT0qL3RydWUpOworICAgICAgZGVidWdfaG9va3MtPmVhcmx5X2dsb2Jh bF9kZWNsIChkZWNsKTsKICAgICB9CiB9CiAKQEAgLTEwMzIyLDggKzEwMzIy LDEwIEBAIGNfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9uc18yICh0cmVlIGds b2JhbHMpCiB7CiAgIHRyZWUgZGVjbDsKIAorICAvKiBGSVhNRTogUmV3cml0 ZSB0byBpdGVyYXRlIHRocm91Z2ggdmFycG9vbC9jZ3JhcGggbm9kZXMsIGlu c3RlYWQKKyAgICAgb2YgYGdsb2JhbHMnLiAgKi8KICAgZm9yIChkZWNsID0g Z2xvYmFsczsgZGVjbCA7IGRlY2wgPSBERUNMX0NIQUlOIChkZWNsKSkKLSAg ICBkZWJ1Z19ob29rcy0+Z2xvYmFsX2RlY2wgKGRlY2wsIC8qZWFybHk9Ki9m YWxzZSk7CisgICAgZGVidWdfaG9va3MtPmxhdGVfZ2xvYmFsX2RlY2wgKGRl Y2wpOwogfQogCiAvKiBDYWxsYmFjayB0byBjb2xsZWN0IGEgc291cmNlX3Jl ZiBmcm9tIGEgREVDTC4gICovCkBAIC0xMDM3NCwxNyArMTAzNzYsMTIgQEAg Zm9yX2VhY2hfZ2xvYmFsX2RlY2wgKHZvaWQgKCpjYWxsYmFjaykgKHRyZWUg ZGVjbCkpCiB9CiAKIHZvaWQKLWNfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9u cyAodm9pZCkKK2NfZWFybHlfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyAo dm9pZCkKIHsKLSAgdHJlZSB0OwotICB1bnNpZ25lZCBpOwotCiAgIC8qIFdl IGRvbid0IHdhbnQgdG8gZG8gdGhpcyBpZiBnZW5lcmF0aW5nIGEgUENILiAg Ki8KICAgaWYgKHBjaF9maWxlKQogICAgIHJldHVybjsKIAotICB0aW1ldmFy X3N0YXJ0IChUVl9QSEFTRV9ERUZFUlJFRCk7Ci0KICAgLyogRG8gdGhlIE9i amVjdGl2ZS1DIHN0dWZmLiAgVGhpcyBpcyB3aGVyZSBhbGwgdGhlIE9iamVj dGl2ZS1DCiAgICAgIG1vZHVsZSBzdHVmZiBnZXRzIGdlbmVyYXRlZCAoc3lt dGFiLCBjbGFzcy9wcm90b2NvbC9zZWxlY3RvcgogICAgICBsaXN0cyBldGMp LiAgKi8KQEAgLTEwNDIyLDI0ICsxMDQxOSwyNCBAQCBjX3dyaXRlX2dsb2Jh bF9kZWNsYXJhdGlvbnMgKHZvaWQpCiAKICAgLyogUHJvY2VzcyBhbGwgZmls ZSBzY29wZXMgaW4gdGhpcyBjb21waWxhdGlvbiwgYW5kIHRoZSBleHRlcm5h bF9zY29wZSwKICAgICAgdGhyb3VnaCB3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0 aW9ucyBhbmQgY2hlY2tfZ2xvYmFsX2RlY2xhcmF0aW9ucy4gICovCisgIHRy ZWUgdDsKKyAgdW5zaWduZWQgaTsKICAgRk9SX0VBQ0hfVkVDX0VMVCAoKmFs bF90cmFuc2xhdGlvbl91bml0cywgaSwgdCkKICAgICBjX3dyaXRlX2dsb2Jh bF9kZWNsYXJhdGlvbnNfMSAoQkxPQ0tfVkFSUyAoREVDTF9JTklUSUFMICh0 KSkpOwogICBjX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnNfMSAoQkxPQ0tf VkFSUyAoZXh0X2Jsb2NrKSk7Cit9CiAKLSAgdGltZXZhcl9zdG9wIChUVl9Q SEFTRV9ERUZFUlJFRCk7Ci0gIHRpbWV2YXJfc3RhcnQgKFRWX1BIQVNFX09Q VF9HRU4pOwotCi0gIC8qIFdlJ3JlIGRvbmUgcGFyc2luZzsgcHJvY2VlZCB0 byBvcHRpbWl6ZSBhbmQgZW1pdCBhc3NlbWJseS4KLSAgICAgRklYTUU6IHNo b3VsZG4ndCBiZSB0aGUgZnJvbnQgZW5kJ3MgcmVzcG9uc2liaWxpdHkgdG8g Y2FsbCB0aGlzLiAgKi8KLSAgc3ltdGFiLT5maW5hbGl6ZV9jb21waWxhdGlv bl91bml0ICgpOwotCi0gIHRpbWV2YXJfc3RvcCAoVFZfUEhBU0VfT1BUX0dF Tik7Ci0gIHRpbWV2YXJfc3RhcnQgKFRWX1BIQVNFX0RCR0lORk8pOwotCit2 b2lkCitjX2xhdGVfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyAodm9pZCkK K3sKICAgLyogQWZ0ZXIgY2dyYXBoIGhhcyBoYWQgYSBjaGFuY2UgdG8gZW1p dCBldmVyeXRoaW5nIHRoYXQncyBnb2luZyB0bwotICAgICBiZSBlbWl0dGVk LCBvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24gZm9yIGdsb2JhbHMuICAqLwor ICAgICBiZSBlbWl0dGVkLCBhbWVuZCBhbnkgZGVidWcgaW5mb3JtYXRpb24g Zm9yIGdsb2JhbHMgd2l0aAorICAgICBhcHByb3ByaWF0ZSBsb2NhdGlvbiBp bmZvcm1hdGlvbi4gICovCiAgIGlmICghc2Vlbl9lcnJvciAoKSkKICAgICB7 CisgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgIHRyZWUgdDsKKwogICAg ICAgdGltZXZhcl9wdXNoIChUVl9TWU1PVVQpOwogICAgICAgRk9SX0VBQ0hf VkVDX0VMVCAoKmFsbF90cmFuc2xhdGlvbl91bml0cywgaSwgdCkKIAljX3dy aXRlX2dsb2JhbF9kZWNsYXJhdGlvbnNfMiAoQkxPQ0tfVkFSUyAoREVDTF9J TklUSUFMICh0KSkpOwpAQCAtMTA0NDgsNyArMTA0NDUsNiBAQCBjX3dyaXRl X2dsb2JhbF9kZWNsYXJhdGlvbnMgKHZvaWQpCiAgICAgfQogCiAgIGV4dF9i bG9jayA9IE5VTEw7Ci0gIHRpbWV2YXJfc3RvcCAoVFZfUEhBU0VfREJHSU5G Tyk7CiB9CiAKIC8qIFJlZ2lzdGVyIHJlc2VydmVkIGtleXdvcmQgV09SRCBh cyBxdWFsaWZpZXIgZm9yIGFkZHJlc3Mgc3BhY2UgQVMuICAqLwpkaWZmIC0t Z2l0IGEvZ2NjL2MvYy1vYmpjLWNvbW1vbi5oIGIvZ2NjL2MvYy1vYmpjLWNv bW1vbi5oCmluZGV4IDkyY2Y2MGYuLmFjYWJlZWMgMTAwNjQ0Ci0tLSBhL2dj Yy9jL2Mtb2JqYy1jb21tb24uaAorKysgYi9nY2MvYy9jLW9iamMtY29tbW9u LmgKQEAgLTkyLDggKzkyLDEwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhl IGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAKICN1bmRlZiBMQU5HX0hP T0tTX0dFVERFQ0xTCiAjZGVmaW5lIExBTkdfSE9PS1NfR0VUREVDTFMgbGhk X3JldHVybl9udWxsX3RyZWVfdgotI3VuZGVmIExBTkdfSE9PS1NfV1JJVEVf R0xPQkFMUwotI2RlZmluZSBMQU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMgY193 cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zCisjdW5kZWYgTEFOR19IT09LU19F QVJMWV9XUklURV9HTE9CQUxTCisjZGVmaW5lIExBTkdfSE9PS1NfRUFSTFlf V1JJVEVfR0xPQkFMUyBjX2Vhcmx5X3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlv bnMKKyN1bmRlZiBMQU5HX0hPT0tTX0xBVEVfV1JJVEVfR0xPQkFMUworI2Rl ZmluZSBMQU5HX0hPT0tTX0xBVEVfV1JJVEVfR0xPQkFMUyBjX2xhdGVfd3Jp dGVfZ2xvYmFsX2RlY2xhcmF0aW9ucwogCiAvKiBIb29rcyBmb3IgdHJlZSBn aW1wbGlmaWNhdGlvbi4gICovCiAjdW5kZWYgTEFOR19IT09LU19HSU1QTElG WV9FWFBSCmRpZmYgLS1naXQgYS9nY2MvYy9jLXRyZWUuaCBiL2djYy9jL2Mt dHJlZS5oCmluZGV4IDYwMDRkNTAuLjlkYWRhOWMgMTAwNjQ0Ci0tLSBhL2dj Yy9jL2MtdHJlZS5oCisrKyBiL2djYy9jL2MtdHJlZS5oCkBAIC02NjksNyAr NjY5LDggQEAgZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIGNfZGVmYXVsdF9w b2ludGVyX21vZGU7CiAKIC8qIEluIGMtZGVjbC5jICovCiBleHRlcm4gdm9p ZCBjX2ZpbmlzaF9pbmNvbXBsZXRlX2RlY2wgKHRyZWUpOwotZXh0ZXJuIHZv aWQgY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zICh2b2lkKTsKK2V4dGVy biB2b2lkIGNfZWFybHlfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyAodm9p ZCk7CitleHRlcm4gdm9pZCBjX2xhdGVfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0 aW9ucyAodm9pZCk7CiBleHRlcm4gdHJlZSBjX29tcF9yZWR1Y3Rpb25faWQg KGVudW0gdHJlZV9jb2RlLCB0cmVlKTsKIGV4dGVybiB0cmVlIGNfb21wX3Jl ZHVjdGlvbl9kZWNsICh0cmVlKTsKIGV4dGVybiB0cmVlIGNfb21wX3JlZHVj dGlvbl9sb29rdXAgKHRyZWUsIHRyZWUpOwpkaWZmIC0tZ2l0IGEvZ2NjL2Nw L2NwLW9iamNwLWNvbW1vbi5oIGIvZ2NjL2NwL2NwLW9iamNwLWNvbW1vbi5o CmluZGV4IDI0NjgwMGUuLjI0MzVlMDYgMTAwNjQ0Ci0tLSBhL2djYy9jcC9j cC1vYmpjcC1jb21tb24uaAorKysgYi9nY2MvY3AvY3Atb2JqY3AtY29tbW9u LmgKQEAgLTgzLDggKzgzLDkgQEAgZXh0ZXJuIHZvaWQgY3BfY29tbW9uX2lu aXRfdHMgKHZvaWQpOwogI2RlZmluZSBMQU5HX0hPT0tTX1BSSU5UX0VSUk9S X0ZVTkNUSU9OCWN4eF9wcmludF9lcnJvcl9mdW5jdGlvbgogI3VuZGVmIExB TkdfSE9PS1NfV0FSTl9VTlVTRURfR0xPQkFMX0RFQ0wKICNkZWZpbmUgTEFO R19IT09LU19XQVJOX1VOVVNFRF9HTE9CQUxfREVDTCBjeHhfd2Fybl91bnVz ZWRfZ2xvYmFsX2RlY2wKLSN1bmRlZiBMQU5HX0hPT0tTX1dSSVRFX0dMT0JB TFMKLSNkZWZpbmUgTEFOR19IT09LU19XUklURV9HTE9CQUxTIGNwX3dyaXRl X2dsb2JhbF9kZWNsYXJhdGlvbnMKKy8qIEZJWE1FOiBBZGQgQysrIHN1cHBv cnQuICAqLworI3VuZGVmIExBTkdfSE9PS1NfRUFSTFlfV1JJVEVfR0xPQkFM UworI2RlZmluZSBMQU5HX0hPT0tTX0VBUkxZX1dSSVRFX0dMT0JBTFMgY3Bf d3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucwogI3VuZGVmICBMQU5HX0hPT0tT X0JVSUxUSU5fRlVOQ1RJT04KICNkZWZpbmUgTEFOR19IT09LU19CVUlMVElO X0ZVTkNUSU9OIGN4eF9idWlsdGluX2Z1bmN0aW9uCiAjdW5kZWYgIExBTkdf SE9PS1NfQlVJTFRJTl9GVU5DVElPTl9FWFRfU0NPUEUKZGlmZiAtLWdpdCBh L2djYy9kYnhvdXQuYyBiL2djYy9kYnhvdXQuYwppbmRleCAyMDhjZWM5Li5l NTE3MzExIDEwMDY0NAotLS0gYS9nY2MvZGJ4b3V0LmMKKysrIGIvZ2NjL2Ri eG91dC5jCkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGljIGludCBkYnhvdXRf c3ltYm9sX2xvY2F0aW9uICh0cmVlLCB0cmVlLCBjb25zdCBjaGFyICosIHJ0 eCk7CiBzdGF0aWMgdm9pZCBkYnhvdXRfc3ltYm9sX25hbWUgKHRyZWUsIGNv bnN0IGNoYXIgKiwgaW50KTsKIHN0YXRpYyB2b2lkIGRieG91dF9jb21tb25f bmFtZSAodHJlZSwgY29uc3QgY2hhciAqLCBzdGFiX2NvZGVfdHlwZSk7CiBz dGF0aWMgY29uc3QgY2hhciAqZGJ4b3V0X2NvbW1vbl9jaGVjayAodHJlZSwg aW50ICopOwotc3RhdGljIHZvaWQgZGJ4b3V0X2dsb2JhbF9kZWNsICh0cmVl LCBib29sKTsKK3N0YXRpYyB2b2lkIGRieG91dF9nbG9iYWxfZGVjbCAodHJl ZSk7CiBzdGF0aWMgdm9pZCBkYnhvdXRfdHlwZV9kZWNsICh0cmVlLCBpbnQp Owogc3RhdGljIHZvaWQgZGJ4b3V0X2hhbmRsZV9wY2ggKHVuc2lnbmVkKTsK IHN0YXRpYyB2b2lkIGRlYnVnX2ZyZWVfcXVldWUgKHZvaWQpOwpAQCAtMzY2 LDcgKzM2Niw4IEBAIGNvbnN0IHN0cnVjdCBnY2NfZGVidWdfaG9va3MgZGJ4 X2RlYnVnX2hvb2tzID0KICNlbmRpZgogICBkZWJ1Z19ub3RoaW5nX2ludCwJ CSAgICAgICAgIC8qIGVuZF9mdW5jdGlvbiAqLwogICBkYnhvdXRfZnVuY3Rp b25fZGVjbCwKLSAgZGJ4b3V0X2dsb2JhbF9kZWNsLAkJICAgICAgICAgLyog Z2xvYmFsX2RlY2wgKi8KKyAgZGVidWdfbm90aGluZ190cmVlLAkJICAgICAg ICAgLyogZWFybHlfZ2xvYmFsX2RlY2wgKi8KKyAgZGJ4b3V0X2dsb2JhbF9k ZWNsLAkJICAgICAgICAgLyogbGF0ZV9nbG9iYWxfZGVjbCAqLwogICBkYnhv dXRfdHlwZV9kZWNsLAkJCSAvKiB0eXBlX2RlY2wgKi8KICAgZGVidWdfbm90 aGluZ190cmVlX3RyZWVfdHJlZV9ib29sLAkgLyogaW1wb3J0ZWRfbW9kdWxl X29yX2RlY2wgKi8KICAgZGVidWdfbm90aGluZ190cmVlLAkJICAgICAgICAg LyogZGVmZXJyZWRfaW5saW5lX2Z1bmN0aW9uICovCkBAIC00MDIsNyArNDAz LDggQEAgY29uc3Qgc3RydWN0IGdjY19kZWJ1Z19ob29rcyB4Y29mZl9kZWJ1 Z19ob29rcyA9CiAgIGRlYnVnX25vdGhpbmdfdHJlZSwJCSAgICAgICAgIC8q IGJlZ2luX2Z1bmN0aW9uICovCiAgIHhjb2Zmb3V0X2VuZF9mdW5jdGlvbiwK ICAgZGVidWdfbm90aGluZ190cmVlLAkJICAgICAgICAgLyogZnVuY3Rpb25f ZGVjbCAqLwotICBkYnhvdXRfZ2xvYmFsX2RlY2wsCQkgICAgICAgICAvKiBn bG9iYWxfZGVjbCAqLworICBkZWJ1Z19ub3RoaW5nX3RyZWUsCQkgICAgICAg ICAvKiBlYXJseV9nbG9iYWxfZGVjbCAqLworICBkYnhvdXRfZ2xvYmFsX2Rl Y2wsCQkgICAgICAgICAvKiBsYXRlX2dsb2JhbF9kZWNsICovCiAgIGRieG91 dF90eXBlX2RlY2wsCQkJIC8qIHR5cGVfZGVjbCAqLwogICBkZWJ1Z19ub3Ro aW5nX3RyZWVfdHJlZV90cmVlX2Jvb2wsCSAvKiBpbXBvcnRlZF9tb2R1bGVf b3JfZGVjbCAqLwogICBkZWJ1Z19ub3RoaW5nX3RyZWUsCQkgICAgICAgICAv KiBkZWZlcnJlZF9pbmxpbmVfZnVuY3Rpb24gKi8KQEAgLTEzMjAsNyArMTMy Miw3IEBAIGRieG91dF9mdW5jdGlvbl9kZWNsICh0cmVlIGRlY2wpCiAvKiBE ZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgYSBnbG9iYWwgREVDTC4gIENhbGxlZCBm cm9tIHRvcGxldi5jIGFmdGVyCiAgICBjb21waWxhdGlvbiBwcm9wZXIgaGFz IGZpbmlzaGVkLiAgKi8KIHN0YXRpYyB2b2lkCi1kYnhvdXRfZ2xvYmFsX2Rl Y2wgKHRyZWUgZGVjbCwgYm9vbCBlYXJseSBBVFRSSUJVVEVfVU5VU0VEKQor ZGJ4b3V0X2dsb2JhbF9kZWNsICh0cmVlIGRlY2wpCiB7CiAgIGlmIChUUkVF X0NPREUgKGRlY2wpID09IFZBUl9ERUNMICYmICFERUNMX0VYVEVSTkFMIChk ZWNsKSkKICAgICB7CmRpZmYgLS1naXQgYS9nY2MvZGVidWcuYyBiL2djYy9k ZWJ1Zy5jCmluZGV4IGI1ODE4ZGUuLjJiZWIxMGYgMTAwNjQ0Ci0tLSBhL2dj Yy9kZWJ1Zy5jCisrKyBiL2djYy9kZWJ1Zy5jCkBAIC00Myw3ICs0Myw4IEBA IGNvbnN0IHN0cnVjdCBnY2NfZGVidWdfaG9va3MgZG9fbm90aGluZ19kZWJ1 Z19ob29rcyA9CiAgIGRlYnVnX25vdGhpbmdfdHJlZSwJCSAgICAgICAgIC8q IGJlZ2luX2Z1bmN0aW9uICovCiAgIGRlYnVnX25vdGhpbmdfaW50LAkJICAg ICAgICAgLyogZW5kX2Z1bmN0aW9uICovCiAgIGRlYnVnX25vdGhpbmdfdHJl ZSwJCSAgICAgICAgIC8qIGZ1bmN0aW9uX2RlY2wgKi8KLSAgZGVidWdfbm90 aGluZ190cmVlX2Jvb2wsCSAgICAgICAgIC8qIGdsb2JhbF9kZWNsICovCisg IGRlYnVnX25vdGhpbmdfdHJlZSwJCQkgLyogZWFybHlfZ2xvYmFsX2RlY2wg Ki8KKyAgZGVidWdfbm90aGluZ190cmVlLAkgICAgICAgICAJIC8qIGxhdGVf Z2xvYmFsX2RlY2wgKi8KICAgZGVidWdfbm90aGluZ190cmVlX2ludCwJCSAv KiB0eXBlX2RlY2wgKi8KICAgZGVidWdfbm90aGluZ190cmVlX3RyZWVfdHJl ZV9ib29sLAkgLyogaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wgKi8KICAgZGVi dWdfbm90aGluZ190cmVlLAkJICAgICAgICAgLyogZGVmZXJyZWRfaW5saW5l X2Z1bmN0aW9uICovCmRpZmYgLS1naXQgYS9nY2MvZGVidWcuaCBiL2djYy9k ZWJ1Zy5oCmluZGV4IDk0NDA1MTUuLjIyNzYxOGQgMTAwNjQ0Ci0tLSBhL2dj Yy9kZWJ1Zy5oCisrKyBiL2djYy9kZWJ1Zy5oCkBAIC05MiwxMiArOTIsMjIg QEAgc3RydWN0IGdjY19kZWJ1Z19ob29rcwogICAgICBmdW5jdGlvbi4gICov CiAgIHZvaWQgKCogZnVuY3Rpb25fZGVjbCkgKHRyZWUgZGVjbCk7CiAKLSAg LyogRGVidWcgaW5mb3JtYXRpb24gZm9yIGEgZ2xvYmFsIERFQ0wuICBDYWxs ZWQgZnJvbSB0b3BsZXYuYyBhZnRlcgotICAgICBjb21waWxhdGlvbiBwcm9w ZXIgaGFzIGZpbmlzaGVkLiAgRUFSTFkgaXMgdHJ1ZSBpZiBnbG9iYWxfZGVj bCgpCi0gICAgIGlzIGJlaW5nIGNhbGxlZCBlYXJseSBvbiBpbiB0aGUgY29t cGlsYXRpb24gcHJvY2VzcyAoaS5lLiwgYmVmb3JlCi0gICAgIGNncmFwaCBp bmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYW5kIGJlZm9yZSBjb2RlIGlzCi0g ICAgIGdlbmVyYXRlZCkuICAqLwotICB2b2lkICgqIGdsb2JhbF9kZWNsKSAo dHJlZSBkZWNsLCBib29sIGVhcmx5KTsKKyAgLyogRGVidWcgaW5mb3JtYXRp b24gZm9yIGEgZ2xvYmFsIERFQ0wuICBDYWxsZWQgYmVmb3JlIHRoZQorICAg ICBjb21waWxhdGlvbiBwcm9wZXIgaGFzIHJ1biAoaS5lLiwgYmVmb3JlIGNn cmFwaCBpbmZvcm1hdGlvbiBpcworICAgICBhdmFpbGFibGUsIHVzdWFsbHkg YWZ0ZXIgcGFyc2luZyBoYXMgY29tcGxldGVkKS4KKworICAgICBUaGlzIGhv b2tzIGdldHMgY2FsbGVkIHRvIGVtaXQgaW5pdGlhbCBkZWJ1Z2dpbmcgaW5m b3JtYXRpb24KKyAgICAgYWZ0ZXIgcGFyc2luZyBoYXMgaGFwcGVuZWQsIGJ1 dCBiZWZvcmUgd2UgaGF2ZSBjb21wbGV0ZSBsb2NhdGlvbgorICAgICBpbmZv cm1hdGlvbi4gIFdoZW4gdGhlIGNvbXBpbGF0aW9uIHByb3BlciBoYXMgZmlu aXNoZWQsCisgICAgIGxhdGVfZ2xvYmFsX2RlY2wgKGJlbG93KSBpcyBjYWxs ZWQgYW5kIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KKyAgICAgZ2VuZXJh dGVkIGJ5IHRoaXMgaG9vayBpcyBhbWVuZGVkIGFjY29yZGluZ2x5LiAgKi8K KyAgdm9pZCAoKiBlYXJseV9nbG9iYWxfZGVjbCkgKHRyZWUgZGVjbCk7CisK KyAgLyogVGhpcyBob29rIGlzIGNhbGxlZCBhZnRlciB0aGUgY29tcGlsYXRp b24gcHJvcGVyIGhhcyBmaW5pc2hlZCBhbmQKKyAgICAgaXMgdXNlZCB0byBh bW1lbmQgZGVidWdnaW5nIGluZm9ybWF0aW9uIHdoaWNoIHdhcyBpbml0aWFs bHkKKyAgICAgZ2VuZXJhdGVkIGJ5IGVhcmx5X2dsb2JhbF9kZWNsIGFib3Zl ICh3aXRoIGxvY2F0aW9uIGluZm9ybWF0aW9uCisgICAgIGFuZCBzdWNoKS4g ICovCisgIHZvaWQgKCogbGF0ZV9nbG9iYWxfZGVjbCkgKHRyZWUgZGVjbCk7 CiAKICAgLyogRGVidWcgaW5mb3JtYXRpb24gZm9yIGEgdHlwZSBERUNMLiAg Q2FsbGVkIGZyb20gdG9wbGV2LmMgYWZ0ZXIKICAgICAgY29tcGlsYXRpb24g cHJvcGVyLCBhbHNvIGZyb20gdmFyaW91cyBsYW5ndWFnZSBmcm9udCBlbmRz IHRvCkBAIC0xOTEsOCArMjAxLDYgQEAgZXh0ZXJuIHZvaWQgZHdhcmYyb3V0 X3N3aXRjaF90ZXh0X3NlY3Rpb24gKHZvaWQpOwogY29uc3QgY2hhciAqcmVt YXBfZGVidWdfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKik7CiB2b2lkIGFkZF9k ZWJ1Z19wcmVmaXhfbWFwIChjb25zdCBjaGFyICopOwogCi1leHRlcm4gdm9p ZCBkd2FyZjJvdXRfZWFybHlfZGVjbCAodHJlZSk7Ci0KIC8qIEZvciAtZmR1 bXAtZ28tc3BlYy4gICovCiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgZ2NjX2Rl YnVnX2hvb2tzICoKZGlmZiAtLWdpdCBhL2djYy9kd2FyZjJvdXQuYyBiL2dj Yy9kd2FyZjJvdXQuYwppbmRleCA5MThmMjYxLi5mM2Y4NDgxIDEwMDY0NAot LS0gYS9nY2MvZHdhcmYyb3V0LmMKKysrIGIvZ2NjL2R3YXJmMm91dC5jCkBA IC0yNDMwLDcgKzI0MzAsOCBAQCBzdGF0aWMgdm9pZCBkd2FyZjJvdXRfZnVu Y3Rpb25fZGVjbCAodHJlZSk7CiBzdGF0aWMgdm9pZCBkd2FyZjJvdXRfYmVn aW5fYmxvY2sgKHVuc2lnbmVkLCB1bnNpZ25lZCk7CiBzdGF0aWMgdm9pZCBk d2FyZjJvdXRfZW5kX2Jsb2NrICh1bnNpZ25lZCwgdW5zaWduZWQpOwogc3Rh dGljIGJvb2wgZHdhcmYyb3V0X2lnbm9yZV9ibG9jayAoY29uc3RfdHJlZSk7 Ci1zdGF0aWMgdm9pZCBkd2FyZjJvdXRfZ2xvYmFsX2RlY2wgKHRyZWUsIGJv b2wpOworc3RhdGljIHZvaWQgZHdhcmYyb3V0X2Vhcmx5X2dsb2JhbF9kZWNs ICh0cmVlKTsKK3N0YXRpYyB2b2lkIGR3YXJmMm91dF9sYXRlX2dsb2JhbF9k ZWNsICh0cmVlKTsKIHN0YXRpYyB2b2lkIGR3YXJmMm91dF90eXBlX2RlY2wg KHRyZWUsIGludCk7CiBzdGF0aWMgdm9pZCBkd2FyZjJvdXRfaW1wb3J0ZWRf bW9kdWxlX29yX2RlY2wgKHRyZWUsIHRyZWUsIHRyZWUsIGJvb2wpOwogc3Rh dGljIHZvaWQgZHdhcmYyb3V0X2ltcG9ydGVkX21vZHVsZV9vcl9kZWNsXzEg KHRyZWUsIHRyZWUsIHRyZWUsCkBAIC0yNDY4LDcgKzI0NjksOCBAQCBjb25z dCBzdHJ1Y3QgZ2NjX2RlYnVnX2hvb2tzIGR3YXJmMl9kZWJ1Z19ob29rcyA9 CiAgIGR3YXJmMm91dF9iZWdpbl9mdW5jdGlvbiwKICAgZHdhcmYyb3V0X2Vu ZF9mdW5jdGlvbiwJLyogZW5kX2Z1bmN0aW9uICovCiAgIGR3YXJmMm91dF9m dW5jdGlvbl9kZWNsLAkvKiBmdW5jdGlvbl9kZWNsICovCi0gIGR3YXJmMm91 dF9nbG9iYWxfZGVjbCwKKyAgZHdhcmYyb3V0X2Vhcmx5X2dsb2JhbF9kZWNs LAkvKiBlYXJseV9nbG9iYWxfZGVjbCAqLworICBkd2FyZjJvdXRfbGF0ZV9n bG9iYWxfZGVjbCwJLyogbGF0ZV9nbG9iYWxfZGVjbCAqLwogICBkd2FyZjJv dXRfdHlwZV9kZWNsLAkJLyogdHlwZV9kZWNsICovCiAgIGR3YXJmMm91dF9p bXBvcnRlZF9tb2R1bGVfb3JfZGVjbCwKICAgZGVidWdfbm90aGluZ190cmVl LAkJLyogZGVmZXJyZWRfaW5saW5lX2Z1bmN0aW9uICovCkBAIC0yNjA5LDcg KzI2MTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBHVFkoKGNoYWluX2NpcmN1bGFy ICgiJWguZGllX3NpYiIpKSkgZGllX3N0cnVjdCB7CiAgIC8qIERpZSBpcyB1 c2VkIGFuZCBtdXN0IG5vdCBiZSBwcnVuZWQgYXMgdW51c2VkLiAgKi8KICAg Qk9PTF9CSVRGSUVMRCBkaWVfcGVyZW5uaWFsX3AgOiAxOwogICBCT09MX0JJ VEZJRUxEIGNvbWRhdF90eXBlX3AgOiAxOyAvKiBESUUgaGFzIGEgdHlwZSBz aWduYXR1cmUgKi8KLSAgLyogRGllIHdhcyBnZW5lcmF0ZWQgZWFybHkgdmlh IGR3YXJmMm91dF9lYXJseV9kZWNsLiAgKi8KKyAgLyogRGllIHdhcyBnZW5l cmF0ZWQgZWFybHkgdmlhIGR3YXJmMm91dF9lYXJseV9nbG9iYWxfZGVjbC4g ICovCiAgIEJPT0xfQklURklFTEQgZHVtcGVkX2Vhcmx5IDogMTsKICAgLyog TG90cyBvZiBzcGFyZSBiaXRzLiAgKi8KIH0KQEAgLTIwODE3LDI5ICsyMDgx OSw2NSBAQCBnZW5fZGVjbF9kaWUgKHRyZWUgZGVjbCwgdHJlZSBvcmlnaW4s IGR3X2RpZV9yZWYgY29udGV4dF9kaWUpCiAgIHJldHVybiBOVUxMOwogfQog DAotLyogT3V0cHV0IGRlYnVnIGluZm9ybWF0aW9uIGZvciBnbG9iYWwgZGVj bCBERUNMLiAgQ2FsbGVkIGZyb20KLSAgIHRvcGxldi5jIGFmdGVyIGNvbXBp bGF0aW9uIHByb3BlciBoYXMgZmluaXNoZWQuCi0KLSAgIGR3YXJmMm91dF9k ZWNsKCkgd2lsbCBiZSBjYWxsZWQgdHdpY2Ugb24gZWFjaCBnbG9iYWwgc3lt Ym9sOiBvbmNlCi0gICBpbW1lZGlhdGVseSBhZnRlciBwYXJzaW5nIChFQVJM WT10cnVlKSwgYW5kIG9uY2UgYWZ0ZXIgdGhlIGZ1bGwKLSAgIGNvbXBpbGF0 aW9uIGhhcyBmaW5pc2hlZCAoRUFSTFk9ZmFsc2UpLiAgVGhlcmUgYXJlIGNo ZWNrcyBpbgotICAgZHdhcmYyb3V0X2RlY2woKSB0byBtYWtlIHN1cmUgdGhh dCBpZiB3ZSBoYXZlIGEgREVDTCBESUUgdXBvbgotICAgZW50cnksIHRoYXQg dGhlIHByZXZpb3VzbHkgY3JlYXRlZCBESUUgaXMgcmV1c2VkLiAgTm8gbmV3 IERFQ0wgRElFcwotICAgc2hvdWxkIGJlIGNyZWF0ZWQgd2hlbiBFQVJMWT1m YWxzZS4KLQotICAgVGhlIHNlY29uZCB0aW1lIGR3YXJmMm91dF9kZWNsKCkg aXMgY2FsbGVkIChvciBmb3IgdGhhdCBtYXR0ZXIsIHRoZQotICAgc2Vjb25k IHRpbWUgYW55IERFQ0wgRElFIGlzIHNlZW4gdGhyb3VnaG91dCBkd2FyZjJv dXQpLCBvbmx5Ci0gICBpbmZvcm1hdGlvbiBub3QgcHJldmlvdXNseSBhdmFp bGFibGUgKGUuZy4gbG9jYXRpb24pIGlzIHRhY2tlZCBvbnRvCi0gICB0aGUg ZWFybHkgZHVtcGVkIERJRS4gIFRoYXQncyB0aGUgcGxhbiBhbnlob3cgOy0p LiAgKi8KKy8qIE91dHB1dCBpbml0aWFsIGRlYnVnIGluZm9ybWF0aW9uIGZv ciBnbG9iYWwgZGVjbCBERUNMLiAgQ2FsbGVkIGZyb20KKyAgIHRvcGxldi5j IGFmdGVyIHBhcnNpbmcgaGFzIGZpbmlzaGVkLiAgQWZ0ZXIgdGhlIGNvbXBp bGF0aW9uIHByb3BlcgorICAgaGFzIGZpbmlzaGVkLCB0aGUgZGVidWdnaW5n IGluZm9ybWF0aW9uIGdlbmVyYXRlZCBoZXJlIGlzIGFtZW5kZWQKKyAgIHdp dGggbG9jYXRpb24gaW5mb3JtYXRpb24gYW5kIG90aGVyIHRoaW5ncyAoc2Vl CisgICBkd2FyZjJvdXRfbGF0ZV9nbG9iYWxfZGVjbCkuICAqLwogCiBzdGF0 aWMgdm9pZAotZHdhcmYyb3V0X2dsb2JhbF9kZWNsICh0cmVlIGRlY2wsIGJv b2wgZWFybHkpCitkd2FyZjJvdXRfZWFybHlfZ2xvYmFsX2RlY2wgKHRyZWUg ZGVjbCkKIHsKLSAgaWYgKGVhcmx5KQorICAvKiBnZW5fZGVjbF9kaWUoKSB3 aWxsIHNldCBERUNMX0FCU1RSQUNUIGJlY2F1c2UKKyAgICAgY2dyYXBoX2Z1 bmN0aW9uX3Bvc3NpYmx5X2lubGluZWRfcCgpIHJldHVybnMgdHJ1ZS4gIFRo aXMgaXMgaW4KKyAgICAgdHVybiB3aWxsIGNhdXNlIERXX0FUX2lubGluZSBh dHRyaWJ1dGVzIHRvIGJlIHNldC4KKworICAgICBUaGlzIGhhcHBlbnMgYmVj YXVzZSBhdCBlYXJseSBkd2FyZiBnZW5lcmF0aW9uLCB0aGVyZSBpcyBubwor ICAgICBjZ3JhcGggaW5mb3JtYXRpb24sIGNhdXNpbmcgY2dyYXBoX2Z1bmN0 aW9uX3Bvc3NpYmx5X2lubGluZWRfcCgpCisgICAgIHRvIHJldHVybiB0cnVl LiAgVHJpY2sgY2dyYXBoX2Z1bmN0aW9uX3Bvc3NpYmx5X2lubGluZWRfcCgp CisgICAgIHdoaWxlIHdlIGdlbmVyYXRlIGR3YXJmIGVhcmx5LiAgKi8KKyAg Ym9vbCBzYXZlID0gc3ltdGFiLT5nbG9iYWxfaW5mb19yZWFkeTsKKyAgc3lt dGFiLT5nbG9iYWxfaW5mb19yZWFkeSA9IHRydWU7CisKKyAgLyogV2UgZG9u J3QgaGFuZGxlIFRZUEVfREVDTHMuICBJZiByZXF1aXJlZCwgdGhleSdsbCBi ZSByZWFjaGVkIHZpYQorICAgICBvdGhlciBERUNMcyBhbmQgdGhleSBjYW4g cG9pbnQgdG8gdGVtcGxhdGUgdHlwZXMgb3Igb3RoZXIgdGhpbmdzCisgICAg IHRoYXQgZHdhcmYyb3V0IGNhbid0IGhhbmRsZSB3aGVuIGRvbmUgdmlhIGR3 YXJmMm91dF9kZWNsLiAgKi8KKyAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgIT0g VFlQRV9ERUNMCisgICAgICAmJiBUUkVFX0NPREUgKGRlY2wpICE9IFBBUk1f REVDTCkKICAgICB7Ci0gICAgICBkd2FyZjJvdXRfZWFybHlfZGVjbCAoZGVj bCk7Ci0gICAgICByZXR1cm47CisgICAgICBpZiAoVFJFRV9DT0RFIChkZWNs KSA9PSBGVU5DVElPTl9ERUNMKQorCXsKKwkgIC8qIEEgbWlzc2luZyBjZnVu IG1lYW5zIHRoZSBzeW1ib2wgaXMgdW51c2VkIGFuZCB3YXMgcmVtb3ZlZAor CSAgICAgZnJvbSB0aGUgY2FsbGdyYXBoLiAgKi8KKwkgIGlmICghREVDTF9T VFJVQ1RfRlVOQ1RJT04gKGRlY2wpKQorCSAgICBnb3RvIGVhcmx5X2RlY2xf ZXhpdDsKKworCSAgcHVzaF9jZnVuIChERUNMX1NUUlVDVF9GVU5DVElPTiAo ZGVjbCkpOworCSAgY3VycmVudF9mdW5jdGlvbl9kZWNsID0gZGVjbDsKKwl9 CisgICAgICBkd19kaWVfcmVmIGRpZSA9IGR3YXJmMm91dF9kZWNsIChkZWNs KTsKKyAgICAgIGlmIChkaWUpCisJZGllLT5kdW1wZWRfZWFybHkgPSB0cnVl OworICAgICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJT05fREVD TCkKKwl7CisJICBwb3BfY2Z1biAoKTsKKwkgIGN1cnJlbnRfZnVuY3Rpb25f ZGVjbCA9IE5VTEw7CisJfQogICAgIH0KKyBlYXJseV9kZWNsX2V4aXQ6Cisg IHN5bXRhYi0+Z2xvYmFsX2luZm9fcmVhZHkgPSBzYXZlOworICByZXR1cm47 Cit9CisKKy8qIEFmdGVyIHRoZSBjb21waWxhdGlvbiBwcm9wZXIgaGFzIGZp bmlzaGVkLCBhdWdtZW50IGFueSBkZWJ1Z2dpbmcKKyAgIGluZm9ybWF0aW9u IGdlbmVyYXRlZCBpbiBkd2FyZjJvdXRfZWFybHlfZ2xvYmFsX2RlY2woKS4g IE5vIG5ldworICAgREVDTCBESUVzIHNob3VsZCBiZSBnZW5lcmF0ZWQgYXQg dGhpcyBwb2ludC4gIEluc3RlYWQsIERJRXMKKyAgIGdlbmVyYXRlZCBpbiBk d2FyZjJvdXRfZWFybHlfZ2xvYmFsX2RlY2wgc2hvdWxkIGJlIHJldXNlZCBh bmQKKyAgIGFtZW5kZWQuICAqLworCitzdGF0aWMgdm9pZAorZHdhcmYyb3V0 X2xhdGVfZ2xvYmFsX2RlY2wgKHRyZWUgZGVjbCkKK3sKICAgLyogT3V0cHV0 IERXQVJGMiBpbmZvcm1hdGlvbiBmb3IgZmlsZS1zY29wZSB0ZW50YXRpdmUg ZGF0YSBvYmplY3QKICAgICAgZGVjbGFyYXRpb25zLCBmaWxlLXNjb3BlIChl eHRlcm4pIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAod2hpY2gKICAgICAgaGFk IG5vIGNvcnJlc3BvbmRpbmcgYm9keSkgYW5kIGZpbGUtc2NvcGUgdGFnZ2Vk IHR5cGUgZGVjbGFyYXRpb25zCkBAIC0yMTE4MSw1MiArMjEyMTksNiBAQCBk d2FyZjJvdXRfZGVjbCAodHJlZSBkZWNsKQogICByZXR1cm4gZGllOwogfQog Ci0vKiBFYXJseSBkdW1waW5nIG9mIERFQ0xzIGJlZm9yZSB3ZSBsb3NlIGxh bmd1YWdlIGRhdGEuICAqLwotCi12b2lkCi1kd2FyZjJvdXRfZWFybHlfZGVj bCAodHJlZSBkZWNsKQotewotICAvKiBnZW5fZGVjbF9kaWUoKSB3aWxsIHNl dCBERUNMX0FCU1RSQUNUIGJlY2F1c2UKLSAgICAgY2dyYXBoX2Z1bmN0aW9u X3Bvc3NpYmx5X2lubGluZWRfcCgpIHJldHVybnMgdHJ1ZS4gIFRoaXMgaXMg aW4KLSAgICAgdHVybiB3aWxsIGNhdXNlIERXX0FUX2lubGluZSBhdHRyaWJ1 dGVzIHRvIGJlIHNldC4KLQotICAgICBUaGlzIGhhcHBlbnMgYmVjYXVzZSBh dCBlYXJseSBkd2FyZiBnZW5lcmF0aW9uLCB0aGVyZSBpcyBubwotICAgICBj Z3JhcGggaW5mb3JtYXRpb24sIGNhdXNpbmcgY2dyYXBoX2Z1bmN0aW9uX3Bv c3NpYmx5X2lubGluZWRfcCgpCi0gICAgIHRvIHJldHVybiB0cnVlLiAgVHJp Y2sgY2dyYXBoX2Z1bmN0aW9uX3Bvc3NpYmx5X2lubGluZWRfcCgpCi0gICAg IHdoaWxlIHdlIGdlbmVyYXRlIGR3YXJmIGVhcmx5LiAgKi8KLSAgYm9vbCBz YXZlID0gc3ltdGFiLT5nbG9iYWxfaW5mb19yZWFkeTsKLSAgc3ltdGFiLT5n bG9iYWxfaW5mb19yZWFkeSA9IHRydWU7Ci0KLSAgLyogV2UgZG9uJ3QgaGFu ZGxlIFRZUEVfREVDTHMuICBJZiByZXF1aXJlZCwgdGhleSdsbCBiZSByZWFj aGVkIHZpYQotICAgICBvdGhlciBERUNMcyBhbmQgdGhleSBjYW4gcG9pbnQg dG8gdGVtcGxhdGUgdHlwZXMgb3Igb3RoZXIgdGhpbmdzCi0gICAgIHRoYXQg ZHdhcmYyb3V0IGNhbid0IGhhbmRsZSB3aGVuIGRvbmUgdmlhIGR3YXJmMm91 dF9kZWNsLiAgKi8KLSAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgIT0gVFlQRV9E RUNMCi0gICAgICAmJiBUUkVFX0NPREUgKGRlY2wpICE9IFBBUk1fREVDTCkK LSAgICB7Ci0gICAgICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElP Tl9ERUNMKQotCXsKLQkgIC8qIEEgbWlzc2luZyBjZnVuIG1lYW5zIHRoZSBz eW1ib2wgaXMgdW51c2VkIGFuZCB3YXMgcmVtb3ZlZAotCSAgICAgZnJvbSB0 aGUgY2FsbGdyYXBoLiAgKi8KLQkgIGlmICghREVDTF9TVFJVQ1RfRlVOQ1RJ T04gKGRlY2wpKQotCSAgICBnb3RvIGVhcmx5X2RlY2xfZXhpdDsKLQotCSAg cHVzaF9jZnVuIChERUNMX1NUUlVDVF9GVU5DVElPTiAoZGVjbCkpOwotCSAg Y3VycmVudF9mdW5jdGlvbl9kZWNsID0gZGVjbDsKLQl9Ci0gICAgICBkd19k aWVfcmVmIGRpZSA9IGR3YXJmMm91dF9kZWNsIChkZWNsKTsKLSAgICAgIGlm IChkaWUpCi0JZGllLT5kdW1wZWRfZWFybHkgPSB0cnVlOwotICAgICAgaWYg KFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJT05fREVDTCkKLQl7Ci0JICBw b3BfY2Z1biAoKTsKLQkgIGN1cnJlbnRfZnVuY3Rpb25fZGVjbCA9IE5VTEw7 Ci0JfQotICAgIH0KLSBlYXJseV9kZWNsX2V4aXQ6Ci0gIHN5bXRhYi0+Z2xv YmFsX2luZm9fcmVhZHkgPSBzYXZlOwotICByZXR1cm47Ci19Ci0KIC8qIFdy aXRlIHRoZSBkZWJ1Z2dpbmcgb3V0cHV0IGZvciBERUNMLiAgKi8KIAogc3Rh dGljIHZvaWQKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2Y5NS1sYW5nLmMg Yi9nY2MvZm9ydHJhbi9mOTUtbGFuZy5jCmluZGV4IGRhM2EwZDAuLmQ0MzVj MDcgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2Y5NS1sYW5nLmMKKysrIGIv Z2NjL2ZvcnRyYW4vZjk1LWxhbmcuYwpAQCAtMTA4LDcgKzEwOCw4IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMgZ2ZjX2F0dHJpYnV0 ZV90YWJsZVtdID0KICN1bmRlZiBMQU5HX0hPT0tTX05BTUUKICN1bmRlZiBM QU5HX0hPT0tTX0lOSVQKICN1bmRlZiBMQU5HX0hPT0tTX0ZJTklTSAotI3Vu ZGVmIExBTkdfSE9PS1NfV1JJVEVfR0xPQkFMUworI3VuZGVmIExBTkdfSE9P S1NfRUFSTFlfV1JJVEVfR0xPQkFMUworI3VuZGVmIExBTkdfSE9PS1NfTEFU RV9XUklURV9HTE9CQUxTCiAjdW5kZWYgTEFOR19IT09LU19PUFRJT05fTEFO R19NQVNLCiAjdW5kZWYgTEFOR19IT09LU19JTklUX09QVElPTlNfU1RSVUNU CiAjdW5kZWYgTEFOR19IT09LU19JTklUX09QVElPTlMKQEAgLTE0Miw3ICsx NDMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGdm Y19hdHRyaWJ1dGVfdGFibGVbXSA9CiAjZGVmaW5lIExBTkdfSE9PS1NfTkFN RSAgICAgICAgICAgICAgICAgIkdOVSBGb3J0cmFuIgogI2RlZmluZSBMQU5H X0hPT0tTX0lOSVQgICAgICAgICAgICAgICAgIGdmY19pbml0CiAjZGVmaW5l IExBTkdfSE9PS1NfRklOSVNIICAgICAgICAgICAgICAgZ2ZjX2ZpbmlzaAot I2RlZmluZSBMQU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMJZ2ZjX3dyaXRlX2ds b2JhbF9kZWNsYXJhdGlvbnMKKy8qIEZJWE1FOiBBZGQgRm9ydHJhbiBzdXBw b3J0LiAgKi8KKyNkZWZpbmUgTEFOR19IT09LU19FQVJMWV9XUklURV9HTE9C QUxTCWdmY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zCiAjZGVmaW5lIExB TkdfSE9PS1NfT1BUSU9OX0xBTkdfTUFTSwlnZmNfb3B0aW9uX2xhbmdfbWFz awogI2RlZmluZSBMQU5HX0hPT0tTX0lOSVRfT1BUSU9OU19TVFJVQ1QgIGdm Y19pbml0X29wdGlvbnNfc3RydWN0CiAjZGVmaW5lIExBTkdfSE9PS1NfSU5J VF9PUFRJT05TICAgICAgICAgZ2ZjX2luaXRfb3B0aW9ucwpkaWZmIC0tZ2l0 IGEvZ2NjL2dvL2dvLWxhbmcuYyBiL2djYy9nby9nby1sYW5nLmMKaW5kZXgg MjRiNjQzNy4uYTJhZWM2MyAxMDA2NDQKLS0tIGEvZ2NjL2dvL2dvLWxhbmcu YworKysgYi9nY2MvZ28vZ28tbGFuZy5jCkBAIC01MzQsNyArNTM0LDggQEAg Z29fbG9jYWxpemVfaWRlbnRpZmllciAoY29uc3QgY2hhciAqaWRlbnQpCiAj dW5kZWYgTEFOR19IT09LU19HTE9CQUxfQklORElOR1NfUAogI3VuZGVmIExB TkdfSE9PS1NfUFVTSERFQ0wKICN1bmRlZiBMQU5HX0hPT0tTX0dFVERFQ0xT Ci0jdW5kZWYgTEFOR19IT09LU19XUklURV9HTE9CQUxTCisjdW5kZWYgTEFO R19IT09LU19FQVJMWV9XUklURV9HTE9CQUxTCisjdW5kZWYgTEFOR19IT09L U19MQVRFX1dSSVRFX0dMT0JBTFMKICN1bmRlZiBMQU5HX0hPT0tTX0dJTVBM SUZZX0VYUFIKICN1bmRlZiBMQU5HX0hPT0tTX0VIX1BFUlNPTkFMSVRZCiAK QEAgLTU1MSw3ICs1NTIsOCBAQCBnb19sb2NhbGl6ZV9pZGVudGlmaWVyIChj b25zdCBjaGFyICppZGVudCkKICNkZWZpbmUgTEFOR19IT09LU19HTE9CQUxf QklORElOR1NfUAlnb19sYW5naG9va19nbG9iYWxfYmluZGluZ3NfcAogI2Rl ZmluZSBMQU5HX0hPT0tTX1BVU0hERUNMCQlnb19sYW5naG9va19wdXNoZGVj bAogI2RlZmluZSBMQU5HX0hPT0tTX0dFVERFQ0xTCQlnb19sYW5naG9va19n ZXRkZWNscwotI2RlZmluZSBMQU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMJZ29f bGFuZ2hvb2tfd3JpdGVfZ2xvYmFscworLyogRklYTUU6IEFkZCBHbyBzdXBw b3J0LiAgKi8KKyNkZWZpbmUgTEFOR19IT09LU19FQVJMWV9XUklURV9HTE9C QUxTCWdvX2xhbmdob29rX3dyaXRlX2dsb2JhbHMKICNkZWZpbmUgTEFOR19I T09LU19HSU1QTElGWV9FWFBSCWdvX2xhbmdob29rX2dpbXBsaWZ5X2V4cHIK ICNkZWZpbmUgTEFOR19IT09LU19FSF9QRVJTT05BTElUWQlnb19sYW5naG9v a19laF9wZXJzb25hbGl0eQogCmRpZmYgLS1naXQgYS9nY2MvZ29kdW1wLmMg Yi9nY2MvZ29kdW1wLmMKaW5kZXggMDFmODQxMC4uODg4ZGNiMCAxMDA2NDQK LS0tIGEvZ2NjL2dvZHVtcC5jCisrKyBiL2djYy9nb2R1bXAuYwpAQCAtNDk2 LDkgKzQ5Niw5IEBAIGdvX2Z1bmN0aW9uX2RlY2wgKHRyZWUgZGVjbCkKIC8q IEEgZ2xvYmFsIHZhcmlhYmxlIGRlY2wuICAqLwogCiBzdGF0aWMgdm9pZAot Z29fZ2xvYmFsX2RlY2wgKHRyZWUgZGVjbCwgYm9vbCBlYXJseSkKK2dvX2ds b2JhbF9kZWNsICh0cmVlIGRlY2wpCiB7Ci0gIHJlYWxfZGVidWdfaG9va3Mt Pmdsb2JhbF9kZWNsIChkZWNsLCBlYXJseSk7CisgIHJlYWxfZGVidWdfaG9v a3MtPmxhdGVfZ2xvYmFsX2RlY2wgKGRlY2wpOwogICBnb19kZWNsIChkZWNs KTsKIH0KIApAQCAtMTI0MCw3ICsxMjQwLDcgQEAgZHVtcF9nb19zcGVjX2lu aXQgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBzdHJ1Y3QgZ2NjX2Rl YnVnX2hvb2tzICpob29rcykKICAgZ29fZGVidWdfaG9va3MuZGVmaW5lID0g Z29fZGVmaW5lOwogICBnb19kZWJ1Z19ob29rcy51bmRlZiA9IGdvX3VuZGVm OwogICBnb19kZWJ1Z19ob29rcy5mdW5jdGlvbl9kZWNsID0gZ29fZnVuY3Rp b25fZGVjbDsKLSAgZ29fZGVidWdfaG9va3MuZ2xvYmFsX2RlY2wgPSBnb19n bG9iYWxfZGVjbDsKKyAgZ29fZGVidWdfaG9va3MubGF0ZV9nbG9iYWxfZGVj bCA9IGdvX2dsb2JhbF9kZWNsOwogICBnb19kZWJ1Z19ob29rcy50eXBlX2Rl Y2wgPSBnb190eXBlX2RlY2w7CiAKICAgbWFjcm9faGFzaCA9IGh0YWJfY3Jl YXRlICgxMDAsIG1hY3JvX2hhc2hfaGFzaHZhbCwgbWFjcm9faGFzaF9lcSwK ZGlmZiAtLWdpdCBhL2djYy9qYXZhL2xhbmcuYyBiL2djYy9qYXZhL2xhbmcu YwppbmRleCA4YTY4NjkxLi41Y2RhYTE1IDEwMDY0NAotLS0gYS9nY2MvamF2 YS9sYW5nLmMKKysrIGIvZ2NjL2phdmEvbGFuZy5jCkBAIC0xNDIsOCArMTQy LDkgQEAgc3RydWN0IEdUWSgoKSkgbGFuZ3VhZ2VfZnVuY3Rpb24gewogI2Rl ZmluZSBMQU5HX0hPT0tTX0RFQ0xfUFJJTlRBQkxFX05BTUUgbGFuZ19wcmlu dGFibGVfbmFtZQogI3VuZGVmIExBTkdfSE9PS1NfUFJJTlRfRVJST1JfRlVO Q1RJT04KICNkZWZpbmUgTEFOR19IT09LU19QUklOVF9FUlJPUl9GVU5DVElP TglqYXZhX3ByaW50X2Vycm9yX2Z1bmN0aW9uCi0jdW5kZWYgTEFOR19IT09L U19XUklURV9HTE9CQUxTCi0jZGVmaW5lIExBTkdfSE9PS1NfV1JJVEVfR0xP QkFMUyBqYXZhX3dyaXRlX2dsb2JhbHMKKy8qIEZJWE1FOiBBZGQgSmF2YSBz dXBwb3J0LiAgKi8KKyN1bmRlZiBMQU5HX0hPT0tTX0VBUkxZX1dSSVRFX0dM T0JBTFMKKyNkZWZpbmUgTEFOR19IT09LU19FQVJMWV9XUklURV9HTE9CQUxT IGphdmFfd3JpdGVfZ2xvYmFscwogCiAjdW5kZWYgTEFOR19IT09LU19UWVBF X0ZPUl9NT0RFCiAjZGVmaW5lIExBTkdfSE9PS1NfVFlQRV9GT1JfTU9ERSBq YXZhX3R5cGVfZm9yX21vZGUKZGlmZiAtLWdpdCBhL2djYy9sYW5naG9va3Mt ZGVmLmggYi9nY2MvbGFuZ2hvb2tzLWRlZi5oCmluZGV4IGU3N2QyZDkuLjQx MDY5MGIgMTAwNjQ0Ci0tLSBhL2djYy9sYW5naG9va3MtZGVmLmgKKysrIGIv Z2NjL2xhbmdob29rcy1kZWYuaApAQCAtMjA0LDcgKzIwNCw4IEBAIGV4dGVy biB0cmVlIGxoZF9tYWtlX25vZGUgKGVudW0gdHJlZV9jb2RlKTsKICNkZWZp bmUgTEFOR19IT09LU19HRVRERUNMUwlnZXRkZWNscwogI2RlZmluZSBMQU5H X0hPT0tTX0ZVTkNUSU9OX0RFQ0xfRVhQTElDSVRfUCBob29rX2Jvb2xfdHJl ZV9mYWxzZQogI2RlZmluZSBMQU5HX0hPT0tTX1dBUk5fVU5VU0VEX0dMT0JB TF9ERUNMIGxoZF93YXJuX3VudXNlZF9nbG9iYWxfZGVjbAotI2RlZmluZSBM QU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMgd3JpdGVfZ2xvYmFsX2RlY2xhcmF0 aW9ucworI2RlZmluZSBMQU5HX0hPT0tTX0VBUkxZX1dSSVRFX0dMT0JBTFMg ZWFybHlfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucworI2RlZmluZSBMQU5H X0hPT0tTX0xBVEVfV1JJVEVfR0xPQkFMUyBsYXRlX3dyaXRlX2dsb2JhbF9k ZWNsYXJhdGlvbnMKICNkZWZpbmUgTEFOR19IT09LU19ERUNMX09LX0ZPUl9T SUJDQUxMCWxoZF9kZWNsX29rX2Zvcl9zaWJjYWxsCiAjZGVmaW5lIExBTkdf SE9PS1NfT01QX1BSSVZBVElaRV9CWV9SRUZFUkVOQ0UgaG9va19ib29sX2Nv bnN0X3RyZWVfZmFsc2UKICNkZWZpbmUgTEFOR19IT09LU19PTVBfUFJFREVU RVJNSU5FRF9TSEFSSU5HIGxoZF9vbXBfcHJlZGV0ZXJtaW5lZF9zaGFyaW5n CkBAIC0yMjgsNyArMjI5LDggQEAgZXh0ZXJuIHRyZWUgbGhkX21ha2Vfbm9k ZSAoZW51bSB0cmVlX2NvZGUpOwogICBMQU5HX0hPT0tTX0ZVTkNUSU9OX1BB Uk1fRVhQQU5ERURfRlJPTV9QQUNLX1AsIFwKICAgTEFOR19IT09LU19HRVRf R0VORVJJQ19GVU5DVElPTl9ERUNMLCBcCiAgIExBTkdfSE9PS1NfV0FSTl9V TlVTRURfR0xPQkFMX0RFQ0wsIFwKLSAgTEFOR19IT09LU19XUklURV9HTE9C QUxTLCBcCisgIExBTkdfSE9PS1NfRUFSTFlfV1JJVEVfR0xPQkFMUywgXAor ICBMQU5HX0hPT0tTX0xBVEVfV1JJVEVfR0xPQkFMUywgXAogICBMQU5HX0hP T0tTX0RFQ0xfT0tfRk9SX1NJQkNBTEwsIFwKICAgTEFOR19IT09LU19PTVBf UFJJVkFUSVpFX0JZX1JFRkVSRU5DRSwgXAogICBMQU5HX0hPT0tTX09NUF9Q UkVERVRFUk1JTkVEX1NIQVJJTkcsIFwKZGlmZiAtLWdpdCBhL2djYy9sYW5n aG9va3MuYyBiL2djYy9sYW5naG9va3MuYwppbmRleCA4ZmY5MWJhLi5jMGQ3 NDU5IDEwMDY0NAotLS0gYS9nY2MvbGFuZ2hvb2tzLmMKKysrIGIvZ2NjL2xh bmdob29rcy5jCkBAIC0yOTAsNDUgKzI5MCw0OCBAQCBsaGRfZGVjbF9va19m b3Jfc2liY2FsbCAoY29uc3RfdHJlZSBkZWNsIEFUVFJJQlVURV9VTlVTRUQp CiAgIHJldHVybiB0cnVlOwogfQogCi0vKiBsYW5nX2hvb2tzLmRlY2xzLmZp bmFsX3dyaXRlX2dsb2JhbHM6IHBlcmZvcm0gZmluYWwgcHJvY2Vzc2luZyBv bgorLyogRklYTUU6IFJld3JpdGUgdGhpcyB0byB1c2UgPHZlYz4uICBSZW1v dmUgdGhpcyBldmVudHVhbGx5IChzZWUgbm90ZQorICAgaW4gbGF0ZV93cml0 ZV9nbG9iYWxfZGVjbGFyYXRpb25zKS4gICovCitzdGF0aWMgdHJlZSAqZ2xv YmFsc192ZWM7CitzdGF0aWMgaW50IGdsb2JhbHNfdmVjX2xlbjsKKworLyog bGFuZ19ob29rcy5kZWNscy5lYXJseV93cml0ZV9nbG9iYWxzOiBwZXJmb3Jt IGZpbmFsIHByb2Nlc3Npbmcgb24KICAgIGdsb2JhbCB2YXJpYWJsZXMuICAq Lwogdm9pZAotd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyAodm9pZCkKK2Vh cmx5X3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMgKHZvaWQpCiB7Ci0gIHRy ZWUgZ2xvYmFscywgZGVjbCwgKnZlYzsKLSAgaW50IGxlbiwgaTsKKyAgdHJl ZSBnbG9iYWxzLCBkZWNsOwogCi0gIHRpbWV2YXJfc3RhcnQgKFRWX1BIQVNF X0RFRkVSUkVEKTsKICAgLyogUmVhbGx5IGRlZmluZSB2YXJzIHRoYXQgaGF2 ZSBoYWQgb25seSBhIHRlbnRhdGl2ZSBkZWZpbml0aW9uLgogICAgICBSZWFs bHkgb3V0cHV0IGlubGluZSBmdW5jdGlvbnMgdGhhdCBtdXN0IGFjdHVhbGx5 IGJlIGNhbGxhYmxlCiAgICAgIGFuZCBoYXZlIG5vdCBiZWVuIG91dHB1dCBz byBmYXIuICAqLwogCiAgIGdsb2JhbHMgPSBsYW5nX2hvb2tzLmRlY2xzLmdl dGRlY2xzICgpOwotICBsZW4gPSBsaXN0X2xlbmd0aCAoZ2xvYmFscyk7Ci0g IHZlYyA9IFhORVdWRUMgKHRyZWUsIGxlbik7CisgIGdsb2JhbHNfdmVjX2xl biA9IGxpc3RfbGVuZ3RoIChnbG9iYWxzKTsKKyAgZ2xvYmFsc192ZWMgPSBY TkVXVkVDICh0cmVlLCBnbG9iYWxzX3ZlY19sZW4pOwogCiAgIC8qIFByb2Nl c3MgdGhlIGRlY2xzIGluIHJldmVyc2Ugb3JkZXItLWVhcmxpZXN0IGZpcnN0 LgogICAgICBQdXQgdGhlbSBpbnRvIFZFQyBmcm9tIGJhY2sgdG8gZnJvbnQs IHRoZW4gdGFrZSBvdXQgZnJvbSBmcm9udC4gICovCisgIGludCBpOworICBm b3IgKGkgPSAwLCBkZWNsID0gZ2xvYmFsczsgaSA8IGdsb2JhbHNfdmVjX2xl bjsKKyAgICAgICBpKyssIGRlY2wgPSBERUNMX0NIQUlOIChkZWNsKSkKKyAg ICBnbG9iYWxzX3ZlY1tnbG9iYWxzX3ZlY19sZW4gLSBpIC0gMV0gPSBkZWNs OwogCi0gIGZvciAoaSA9IDAsIGRlY2wgPSBnbG9iYWxzOyBpIDwgbGVuOyBp KyssIGRlY2wgPSBERUNMX0NIQUlOIChkZWNsKSkKLSAgICB2ZWNbbGVuIC0g aSAtIDFdID0gZGVjbDsKLQotICB3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9u cyAodmVjLCBsZW4pOwotICBjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zICh2 ZWMsIGxlbik7Ci0gIHRpbWV2YXJfc3RvcCAoVFZfUEhBU0VfREVGRVJSRUQp OwotCi0gIHRpbWV2YXJfc3RhcnQgKFRWX1BIQVNFX09QVF9HRU4pOwotICAv KiBUaGlzIGxhbmcgaG9vayBpcyBkdWFsLXB1cnBvc2VkLCBhbmQgYWxzbyBm aW5hbGl6ZXMgdGhlCi0gICAgIGNvbXBpbGF0aW9uIHVuaXQuICAqLwotICBz eW10YWItPmZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQgKCk7Ci0gIHRpbWV2 YXJfc3RvcCAoVFZfUEhBU0VfT1BUX0dFTik7CisgIHdyYXB1cF9nbG9iYWxf ZGVjbGFyYXRpb25zIChnbG9iYWxzX3ZlYywgZ2xvYmFsc192ZWNfbGVuKTsK KyAgY2hlY2tfZ2xvYmFsX2RlY2xhcmF0aW9ucyAoZ2xvYmFsc192ZWMsIGds b2JhbHNfdmVjX2xlbik7Cit9CiAKLSAgdGltZXZhcl9zdGFydCAoVFZfUEhB U0VfREJHSU5GTyk7Ci0gIGVtaXRfZGVidWdfZ2xvYmFsX2RlY2xhcmF0aW9u cyAodmVjLCBsZW4pOwotICB0aW1ldmFyX3N0b3AgKFRWX1BIQVNFX0RCR0lO Rk8pOworLyogbGFuZ19ob29rcy5kZWNscy5sYXRlX3dyaXRlX2dsb2JhbHM6 IHBlcmZvcm0gZmluYWwgcHJvY2Vzc2luZyBvbgorICAgZ2xvYmFsIHZhcmlh Ymxlcy4gICovCit2b2lkCitsYXRlX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlv bnMgKHZvaWQpCit7CisgIC8qIEZJWE1FOiBSZXdyaXRlIHRoaXMgdG8gdXNl IHRoZSBjZ3JhcGgvdmFycG9vbCBpdGVyYXRvcnMgaW5zdGVhZAorICAgICBv ZiBnbG9iYWxzX3ZlYy4gICovCisgIGVtaXRfZGVidWdfZ2xvYmFsX2RlY2xh cmF0aW9ucyAoZ2xvYmFsc192ZWMsIGdsb2JhbHNfdmVjX2xlbik7CiAKICAg LyogQ2xlYW4gdXAuICAqLwotICBmcmVlICh2ZWMpOworICBmcmVlIChnbG9i YWxzX3ZlYyk7CiB9CiAKIC8qIENhbGxlZCB0byBwZXJmb3JtIGxhbmd1YWdl LXNwZWNpZmljIGluaXRpYWxpemF0aW9uIG9mIENUWC4gICovCmRpZmYgLS1n aXQgYS9nY2MvbGFuZ2hvb2tzLmggYi9nY2MvbGFuZ2hvb2tzLmgKaW5kZXgg NzJmYTg1ZS4uN2UzM2YzYSAxMDA2NDQKLS0tIGEvZ2NjL2xhbmdob29rcy5o CisrKyBiL2djYy9sYW5naG9va3MuaApAQCAtMTgxLDkgKzE4MSwxNiBAQCBz dHJ1Y3QgbGFuZ19ob29rc19mb3JfZGVjbHMKICAgICAgV2Ugd2lsbCBhbHJl YWR5IGhhdmUgY2hlY2tlZCB0aGF0IGl0IGhhcyBzdGF0aWMgYmluZGluZy4g ICovCiAgIGJvb2wgKCp3YXJuX3VudXNlZF9nbG9iYWwpIChjb25zdF90cmVl KTsKIAotICAvKiBPYnRhaW4gYSBsaXN0IG9mIGdsb2JhbHMgYW5kIGRvIGZp bmFsIG91dHB1dCBvbiB0aGVtIGF0IGVuZAotICAgICBvZiBjb21waWxhdGlv biAqLwotICB2b2lkICgqZmluYWxfd3JpdGVfZ2xvYmFscykgKHZvaWQpOwor ICAvKiBPYnRhaW4gYSBsaXN0IG9mIGdsb2JhbHMgYW5kIGRvIGZpbmFsIG91 dHB1dCBvbiB0aGVtIGFmdGVyCisgICAgIHBhcnNpbmcgKGJlZm9yZSBjb21w aWxhdGlvbikuICBUaGlzIGFsc28gaW52b2x2ZXMgb3V0cHV0dGluZworICAg ICBpbml0aWFsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhZnRlciBwYXJzaW5n LiAgKi8KKyAgdm9pZCAoKmVhcmx5X3dyaXRlX2dsb2JhbHMpICh2b2lkKTsK KworICAvKiBQZXJmb3JtIGFueSBmaW5hbCBvdXRwdXQgb2YgZ2xvYmFscyBh ZnRlciBjb21waWxhdGlvbiAoY2dyYXBoCisgICAgIGluZm9ybWF0aW9uIGlz IGF2YWlsYWJsZSkuICBUaGlzIHVzdWFsbHkgaW52b2x2ZXMgYW1lbmRpbmcg YW55CisgICAgIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBvcmlnaW5hbGx5IG91 dHB1dHRlZCBieSB0aGUKKyAgICAgZWFybHlfd3JpdGVfZ2xvYmFscyBob29r IGFib3ZlLiAgKi8KKyAgdm9pZCAoKmxhdGVfd3JpdGVfZ2xvYmFscykgKHZv aWQpOwogCiAgIC8qIFRydWUgaWYgdGhpcyBkZWNsIG1heSBiZSBjYWxsZWQg dmlhIGEgc2liY2FsbC4gICovCiAgIGJvb2wgKCpva19mb3Jfc2liY2FsbCkg KGNvbnN0X3RyZWUpOwpkaWZmIC0tZ2l0IGEvZ2NjL2x0by9sdG8tbGFuZy5j IGIvZ2NjL2x0by9sdG8tbGFuZy5jCmluZGV4IDFmMzk5NDkuLmRlNjU4NTQg MTAwNjQ0Ci0tLSBhL2djYy9sdG8vbHRvLWxhbmcuYworKysgYi9nY2MvbHRv L2x0by1sYW5nLmMKQEAgLTEwOTMsNyArMTA5Myw3IEBAIGx0b193cml0ZV9n bG9iYWxzICh2b2lkKQogICB2YXJwb29sX25vZGUgKnZub2RlOwogICBGT1Jf RUFDSF9ERUZJTkVEX1ZBUklBQkxFICh2bm9kZSkKICAgICBpZiAoIWRlY2xf ZnVuY3Rpb25fY29udGV4dCAodm5vZGUtPmRlY2wpKQotICAgICAgZGVidWdf aG9va3MtPmdsb2JhbF9kZWNsICh2bm9kZS0+ZGVjbCwgLyplYXJseT0qL2Zh bHNlKTsKKyAgICAgIGRlYnVnX2hvb2tzLT5sYXRlX2dsb2JhbF9kZWNsICh2 bm9kZS0+ZGVjbCk7CiB9CiAKIHN0YXRpYyB0cmVlCkBAIC0xMjc1LDggKzEy NzUsMTAgQEAgc3RhdGljIHZvaWQgbHRvX2luaXRfdHMgKHZvaWQpCiAjZGVm aW5lIExBTkdfSE9PS1NfUFVTSERFQ0wgbHRvX3B1c2hkZWNsCiAjdW5kZWYg TEFOR19IT09LU19HRVRERUNMUwogI2RlZmluZSBMQU5HX0hPT0tTX0dFVERF Q0xTIGx0b19nZXRkZWNscwotI3VuZGVmIExBTkdfSE9PS1NfV1JJVEVfR0xP QkFMUwotI2RlZmluZSBMQU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMgbHRvX3dy aXRlX2dsb2JhbHMKKyN1bmRlZiBMQU5HX0hPT0tTX0VBUkxZX1dSSVRFX0dM T0JBTFMKKyNkZWZpbmUgTEFOR19IT09LU19FQVJMWV9XUklURV9HTE9CQUxT IGRlYnVnX25vdGhpbmdfdm9pZAorI3VuZGVmIExBTkdfSE9PS1NfTEFURV9X UklURV9HTE9CQUxTCisjZGVmaW5lIExBTkdfSE9PS1NfTEFURV9XUklURV9H TE9CQUxTIGx0b193cml0ZV9nbG9iYWxzCiAjdW5kZWYgTEFOR19IT09LU19S RUdJU1RFUl9CVUlMVElOX1RZUEUKICNkZWZpbmUgTEFOR19IT09LU19SRUdJ U1RFUl9CVUlMVElOX1RZUEUgbHRvX3JlZ2lzdGVyX2J1aWx0aW5fdHlwZQog I3VuZGVmIExBTkdfSE9PS1NfQlVJTFRJTl9GVU5DVElPTgpkaWZmIC0tZ2l0 IGEvZ2NjL3RvcGxldi5jIGIvZ2NjL3RvcGxldi5jCmluZGV4IGNlZWZhMWIu LjE1MWJjMDQgMTAwNjQ0Ci0tLSBhL2djYy90b3BsZXYuYworKysgYi9nY2Mv dG9wbGV2LmMKQEAgLTUzMiw3ICs1MzIsNyBAQCBlbWl0X2RlYnVnX2dsb2Jh bF9kZWNsYXJhdGlvbnMgKHRyZWUgKnZlYywgaW50IGxlbikKIAogICB0aW1l dmFyX3B1c2ggKFRWX1NZTU9VVCk7CiAgIGZvciAoaSA9IDA7IGkgPCBsZW47 IGkrKykKLSAgICBkZWJ1Z19ob29rcy0+Z2xvYmFsX2RlY2wgKHZlY1tpXSwg LyplYXJseT0qL2ZhbHNlKTsKKyAgICBkZWJ1Z19ob29rcy0+bGF0ZV9nbG9i YWxfZGVjbCAodmVjW2ldKTsKICAgdGltZXZhcl9wb3AgKFRWX1NZTU9VVCk7 CiB9CiAKQEAgLTU2MCw4ICs1NjAsMjAgQEAgY29tcGlsZV9maWxlICh2b2lk KQogCiAgIGdnY19wcm90ZWN0X2lkZW50aWZpZXJzID0gZmFsc2U7CiAKLSAg LyogVGhpcyBtdXN0IGFsc28gY2FsbCBmaW5hbGl6ZV9jb21waWxhdGlvbl91 bml0LiAgKi8KLSAgbGFuZ19ob29rcy5kZWNscy5maW5hbF93cml0ZV9nbG9i YWxzICgpOworICAvKiBFbWl0IGVhcmx5IGRlYnVnZ2luZyBpbmZvcm1hdGlv biBhcyB3ZWxsIGFzIGdsb2JhbHMuICAqLworICB0aW1ldmFyX3N0YXJ0IChU Vl9QSEFTRV9ERUZFUlJFRCk7CisgIGxhbmdfaG9va3MuZGVjbHMuZWFybHlf d3JpdGVfZ2xvYmFscyAoKTsKKyAgdGltZXZhcl9zdG9wIChUVl9QSEFTRV9E RUZFUlJFRCk7CisKKyAgLyogV2UncmUgZG9uZSBwYXJzaW5nOyBwcm9jZWVk IHRvIG9wdGltaXplIGFuZCBlbWl0IGFzc2VtYmx5LiAgKi8KKyAgdGltZXZh cl9zdGFydCAoVFZfUEhBU0VfT1BUX0dFTik7CisgIHN5bXRhYi0+ZmluYWxp emVfY29tcGlsYXRpb25fdW5pdCAoKTsKKyAgdGltZXZhcl9zdG9wIChUVl9Q SEFTRV9PUFRfR0VOKTsKKworICAvKiBBbWVuZCBhbnkgZGVidWdnaW5nIGlu Zm9ybWF0aW9uIGdlbmVyYXRlZCBwcmV2aW91c2x5LiAgKi8KKyAgdGltZXZh cl9zdGFydCAoVFZfUEhBU0VfREJHSU5GTyk7CisgIGxhbmdfaG9va3MuZGVj bHMubGF0ZV93cml0ZV9nbG9iYWxzICgpOworICB0aW1ldmFyX3N0b3AgKFRW X1BIQVNFX0RCR0lORk8pOwogCiAgIGlmIChzZWVuX2Vycm9yICgpKQogICAg IHJldHVybjsKZGlmZiAtLWdpdCBhL2djYy90b3BsZXYuaCBiL2djYy90b3Bs ZXYuaAppbmRleCAxYjU0NTc4Li44MDdiM2YxIDEwMDY0NAotLS0gYS9nY2Mv dG9wbGV2LmgKKysrIGIvZ2NjL3RvcGxldi5oCkBAIC00Myw3ICs0Myw2IEBA IGV4dGVybiBib29sIHdyYXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zICh0cmVl ICosIGludCk7CiBleHRlcm4gdm9pZCBjaGVja19nbG9iYWxfZGVjbGFyYXRp b25fMSAodHJlZSk7CiBleHRlcm4gdm9pZCBjaGVja19nbG9iYWxfZGVjbGFy YXRpb25zICh0cmVlICosIGludCk7CiBleHRlcm4gdm9pZCBlbWl0X2RlYnVn X2dsb2JhbF9kZWNsYXJhdGlvbnMgKHRyZWUgKiwgaW50KTsKLWV4dGVybiB2 b2lkIHdyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMgKHZvaWQpOwogCiBleHRl cm4gdm9pZCBkdW1wX21lbW9yeV9yZXBvcnQgKGJvb2wpOwogZXh0ZXJuIHZv aWQgZHVtcF9wcm9maWxlX3JlcG9ydCAodm9pZCk7Cg== --------------030004060808090800070909--