From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v10 05/18] kunit: test: add the concept of expectations Date: Tue, 16 Jul 2019 02:42:49 -0700 Message-ID: <20190716094302.180360-6-brendanhiggins@google.com> References: <20190716094302.180360-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190716094302.180360-1-brendanhiggins@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: frowand.list@gmail.com, gregkh@linuxfoundation.org, jpoimboe@redhat.com, keescook@google.com, kieran.bingham@ideasonboard.com, mcgrof@kernel.org, peterz@infradead.org, robh@kernel.org, sboyd@kernel.org, shuah@kernel.org, tytso@mit.edu, yamada.masahiro@socionext.com Cc: pmladek@suse.com, linux-doc@vger.kernel.org, amir73il@gmail.com, Brendan Higgins , dri-devel@lists.freedesktop.org, Alexander.Levin@microsoft.com, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, khilman@baylibre.com, knut.omang@oracle.com, wfg@linux.intel.com, joel@jms.id.au, rientjes@google.com, jdike@addtoit.com, dan.carpenter@oracle.com, devicetree@vger.kernel.org, linux-kbuild@vger.kernel.org, Tim.Bird@sony.com, linux-um@lists.infradead.org, rostedt@goodmis.org, julia.lawall@lip6.fr, kunit-dev@googlegroups.com, richard@nod.at, rdunlap@infradead.org, linux-kernel@vger.kernel.org, mpe@ellerman.id.au, linux-fsdevel@vger.kernel.org, logang@deltatee.com List-Id: devicetree@vger.kernel.org QWRkIHN1cHBvcnQgZm9yIGV4cGVjdGF0aW9ucywgd2hpY2ggYWxsb3cgcHJvcGVydGllcyB0byBi ZSBzcGVjaWZpZWQgYW5kCnRoZW4gdmVyaWZpZWQgaW4gdGVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBC cmVuZGFuIEhpZ2dpbnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+ClJldmlld2VkLWJ5OiBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpSZXZpZXdlZC1i eTogTG9nYW4gR3VudGhvcnBlIDxsb2dhbmdAZGVsdGF0ZWUuY29tPgotLS0KIGluY2x1ZGUva3Vu aXQvdGVzdC5oIHwgNTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIGt1bml0L3Rlc3QuYyAgICAgICAgIHwgIDY2ICsrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA1 OTEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUva3VuaXQvdGVzdC5oIGIvaW5j bHVkZS9rdW5pdC90ZXN0LmgKaW5kZXggZTkyOTQwZDdlOWU1MC4uNGNjOTRmMDkzODlkNyAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9rdW5pdC90ZXN0LmgKKysrIGIvaW5jbHVkZS9rdW5pdC90ZXN0LmgK QEAgLTksNiArOSw3IEBACiAjaWZuZGVmIF9LVU5JVF9URVNUX0gKICNkZWZpbmUgX0tVTklUX1RF U1RfSAogCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMu aD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8a3VuaXQva3VuaXQtc3RyZWFt Lmg+CkBAIC0zMjIsNCArMzIzLDUyOCBAQCB2b2lkIF9fcHJpbnRmKDMsIDQpIGt1bml0X3ByaW50 ayhjb25zdCBjaGFyICpsZXZlbCwKICNkZWZpbmUga3VuaXRfZXJyKHRlc3QsIGZtdCwgLi4uKSBc CiAJCWt1bml0X3ByaW50ayhLRVJOX0VSUiwgdGVzdCwgZm10LCAjI19fVkFfQVJHU19fKQogCisv KgorICogR2VuZXJhdGVzIGEgY29tcGlsZS10aW1lIHdhcm5pbmcgaW4gY2FzZSBvZiBjb21wYXJp bmcgaW5jb21wYXRpYmxlIHR5cGVzLgorICovCisjZGVmaW5lIF9fa3VuaXRfdHlwZWNoZWNrKGxo cywgcmhzKSBcCisJKCh2b2lkKSBfX3R5cGVjaGVjayhsaHMsIHJocykpCisKK3N0YXRpYyBpbmxp bmUgc3RydWN0IGt1bml0X3N0cmVhbSAqa3VuaXRfZXhwZWN0X3N0YXJ0KHN0cnVjdCBrdW5pdCAq dGVzdCwKKwkJCQkJCSAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCisJCQkJCQkgICAgICBjb25zdCBj aGFyICpsaW5lKQoreworCXN0cnVjdCBrdW5pdF9zdHJlYW0gKnN0cmVhbSA9IGFsbG9jX2t1bml0 X3N0cmVhbSh0ZXN0LCBLRVJOX0VSUik7CisKKwlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwgIkVY UEVDVEFUSU9OIEZBSUxFRCBhdCAlczolc1xuXHQiLCBmaWxlLCBsaW5lKTsKKworCXJldHVybiBz dHJlYW07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBrdW5pdF9leHBlY3RfZW5kKHN0cnVjdCBr dW5pdCAqdGVzdCwKKwkJCQkgICAgYm9vbCBzdWNjZXNzLAorCQkJCSAgICBzdHJ1Y3Qga3VuaXRf c3RyZWFtICpzdHJlYW0pCit7CisJaWYgKCFzdWNjZXNzKQorCQlrdW5pdF9mYWlsKHRlc3QsIHN0 cmVhbSk7CisJZWxzZQorCQlrdW5pdF9zdHJlYW1fY2xlYXIoc3RyZWFtKTsKK30KKworI2RlZmlu ZSBLVU5JVF9FWFBFQ1RfU1RBUlQodGVzdCkgXAorCQlrdW5pdF9leHBlY3Rfc3RhcnQodGVzdCwg X19GSUxFX18sIF9fc3RyaW5naWZ5KF9fTElORV9fKSkKKworI2RlZmluZSBLVU5JVF9FWFBFQ1Rf RU5EKHRlc3QsIHN1Y2Nlc3MsIHN0cmVhbSkgXAorCQlrdW5pdF9leHBlY3RfZW5kKHRlc3QsIHN1 Y2Nlc3MsIHN0cmVhbSkKKworI2RlZmluZSBLVU5JVF9FWFBFQ1RfTVNHKHRlc3QsIHN1Y2Nlc3Ms IG1lc3NhZ2UsIGZtdCwgLi4uKSBkbyB7CQkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0g Kl9fc3RyZWFtID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCQkJCQkJCQkJ ICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBtZXNzYWdlKTsJCQkJICAgICAg IFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdTX18pOwkJCSAg ICAgICBcCisJS1VOSVRfRVhQRUNUX0VORCh0ZXN0LCBzdWNjZXNzLCBfX3N0cmVhbSk7CQkJICAg ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgS1VOSVRfRVhQRUNUKHRlc3QsIHN1Y2Nlc3Ms IG1lc3NhZ2UpIGRvIHsJCQkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFt ID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwK KwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBtZXNzYWdlKTsJCQkJICAgICAgIFwKKwlLVU5J VF9FWFBFQ1RfRU5EKHRlc3QsIHN1Y2Nlc3MsIF9fc3RyZWFtKTsJCQkgICAgICAgXAorfSB3aGls ZSAoMCkKKworLyoqCisgKiBLVU5JVF9TVUNDRUVEKCkgLSBBIG5vLW9wIGV4cGVjdGF0aW9uLiBP bmx5IGV4aXN0cyBmb3IgY29kZSBjbGFyaXR5LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQg b2JqZWN0LgorICoKKyAqIFRoZSBvcHBvc2l0ZSBvZiBLVU5JVF9GQUlMKCksIGl0IGlzIGFuIGV4 cGVjdGF0aW9uIHRoYXQgY2Fubm90IGZhaWwuIEluIG90aGVyCisgKiB3b3JkcywgaXQgZG9lcyBu b3RoaW5nIGFuZCBvbmx5IGV4aXN0cyBmb3IgY29kZSBjbGFyaXR5LiBTZWUKKyAqIEtVTklUX0VY UEVDVF9UUlVFKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKyNkZWZpbmUgS1VOSVRfU1VD Q0VFRCh0ZXN0KSBkbyB7fSB3aGlsZSAoMCkKKworLyoqCisgKiBLVU5JVF9GQUlMKCkgLSBBbHdh eXMgY2F1c2VzIGEgdGVzdCB0byBmYWlsIHdoZW4gZXZhbHVhdGVkLgorICogQHRlc3Q6IFRoZSB0 ZXN0IGNvbnRleHQgb2JqZWN0LgorICogQGZtdDogYW4gaW5mb3JtYXRpb25hbCBtZXNzYWdlIHRv IGJlIHByaW50ZWQgd2hlbiB0aGUgYXNzZXJ0aW9uIGlzIG1hZGUuCisgKiBALi4uOiBzdHJpbmcg Zm9ybWF0IGFyZ3VtZW50cy4KKyAqCisgKiBUaGUgb3Bwb3NpdGUgb2YgS1VOSVRfU1VDQ0VFRCgp LCBpdCBpcyBhbiBleHBlY3RhdGlvbiB0aGF0IGFsd2F5cyBmYWlscy4gSW4KKyAqIG90aGVyIHdv cmRzLCBpdCBhbHdheXMgcmVzdWx0cyBpbiBhIGZhaWxlZCBleHBlY3RhdGlvbiwgYW5kIGNvbnNl cXVlbnRseQorICogYWx3YXlzIGNhdXNlcyB0aGUgdGVzdCBjYXNlIHRvIGZhaWwgd2hlbiBldmFs dWF0ZWQuIFNlZSBLVU5JVF9FWFBFQ1RfVFJVRSgpCisgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K KyAqLworI2RlZmluZSBLVU5JVF9GQUlMKHRlc3QsIGZtdCwgLi4uKSBkbyB7CQkJCQkgICAgICAg XAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRl c3QpOwkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3Ry ZWFtLCBmbXQsICMjX19WQV9BUkdTX18pOwkJCSAgICAgICBcCisJS1VOSVRfRVhQRUNUX0VORCh0 ZXN0LCBmYWxzZSwgX19zdHJlYW0pOwkJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisvKioKKyAq IEtVTklUX0VYUEVDVF9UUlVFKCkgLSBDYXVzZXMgYSB0ZXN0IGZhaWx1cmUgd2hlbiB0aGUgZXhw cmVzc2lvbiBpcyBub3QgdHJ1ZS4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4K KyAqIEBjb25kaXRpb246IGFuIGFyYml0cmFyeSBib29sZWFuIGV4cHJlc3Npb24uIFRoZSB0ZXN0 IGZhaWxzIHdoZW4gdGhpcyBkb2VzCisgKiBub3QgZXZhbHVhdGUgdG8gdHJ1ZS4KKyAqCisgKiBU aGlzIGFuZCBleHBlY3RhdGlvbnMgb2YgdGhlIGZvcm0gYEtVTklUX0VYUEVDVF8qYCB3aWxsIGNh dXNlIHRoZSB0ZXN0IGNhc2UKKyAqIHRvIGZhaWwgd2hlbiB0aGUgc3BlY2lmaWVkIGNvbmRpdGlv biBpcyBub3QgbWV0OyBob3dldmVyLCBpdCB3aWxsIG5vdCBwcmV2ZW50CisgKiB0aGUgdGVzdCBj YXNlIGZyb20gY29udGludWluZyB0byBydW47IHRoaXMgaXMgb3RoZXJ3aXNlIGtub3duIGFzIGFu CisgKiAqZXhwZWN0YXRpb24gZmFpbHVyZSouCisgKi8KKyNkZWZpbmUgS1VOSVRfRVhQRUNUX1RS VUUodGVzdCwgY29uZGl0aW9uKQkJCQkgICAgICAgXAorCQlLVU5JVF9FWFBFQ1QodGVzdCwgKGNv bmRpdGlvbiksCQkJCSAgICAgICBcCisJCSAgICAgICAiRXhwZWN0ZWQgIiAjY29uZGl0aW9uICIg aXMgdHJ1ZSwgYnV0IGlzIGZhbHNlXG4iKQorCisjZGVmaW5lIEtVTklUX0VYUEVDVF9UUlVFX01T Ryh0ZXN0LCBjb25kaXRpb24sIGZtdCwgLi4uKQkJICAgICAgIFwKKwkJS1VOSVRfRVhQRUNUX01T Ryh0ZXN0LCAoY29uZGl0aW9uKSwJCQkgICAgICAgXAorCQkJCSJFeHBlY3RlZCAiICNjb25kaXRp b24gIiBpcyB0cnVlLCBidXQgaXMgZmFsc2VcbiIsXAorCQkJCWZtdCwgIyNfX1ZBX0FSR1NfXykK KworLyoqCisgKiBLVU5JVF9FWFBFQ1RfRkFMU0UoKSAtIE1ha2VzIGEgdGVzdCBmYWlsdXJlIHdo ZW4gdGhlIGV4cHJlc3Npb24gaXMgbm90IGZhbHNlLgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRl eHQgb2JqZWN0LgorICogQGNvbmRpdGlvbjogYW4gYXJiaXRyYXJ5IGJvb2xlYW4gZXhwcmVzc2lv bi4gVGhlIHRlc3QgZmFpbHMgd2hlbiB0aGlzIGRvZXMKKyAqIG5vdCBldmFsdWF0ZSB0byBmYWxz ZS4KKyAqCisgKiBTZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgQGNvbmRpdGlvbiBldmFsdWF0ZXMg dG8gZmFsc2UuIFNlZQorICogS1VOSVRfRVhQRUNUX1RSVUUoKSBmb3IgbW9yZSBpbmZvcm1hdGlv bi4KKyAqLworI2RlZmluZSBLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgY29uZGl0aW9uKQkJCQkg ICAgICAgXAorCQlLVU5JVF9FWFBFQ1QodGVzdCwgIShjb25kaXRpb24pLAkJCSAgICAgICBcCisJ CSAgICAgICAiRXhwZWN0ZWQgIiAjY29uZGl0aW9uICIgaXMgZmFsc2UsIGJ1dCBpcyB0cnVlXG4i KQorCisjZGVmaW5lIEtVTklUX0VYUEVDVF9GQUxTRV9NU0codGVzdCwgY29uZGl0aW9uLCBmbXQs IC4uLikJCSAgICAgICBcCisJCUtVTklUX0VYUEVDVF9NU0codGVzdCwgIShjb25kaXRpb24pLAkJ CSAgICAgICBcCisJCQkJIkV4cGVjdGVkICIgI2NvbmRpdGlvbiAiIGlzIGZhbHNlLCBidXQgaXMg dHJ1ZVxuIixcCisJCQkJZm10LCAjI19fVkFfQVJHU19fKQorCit2b2lkIGt1bml0X2V4cGVjdF9i aW5hcnlfbXNnKHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJCSAgICAgbG9uZyBsb25nIGxlZnQsIGNv bnN0IGNoYXIgKmxlZnRfbmFtZSwKKwkJCSAgICAgbG9uZyBsb25nIHJpZ2h0LCBjb25zdCBjaGFy ICpyaWdodF9uYW1lLAorCQkJICAgICBib29sIGNvbXBhcmVfcmVzdWx0LAorCQkJICAgICBjb25z dCBjaGFyICpjb21wYXJlX25hbWUsCisJCQkgICAgIGNvbnN0IGNoYXIgKmZpbGUsCisJCQkgICAg IGNvbnN0IGNoYXIgKmxpbmUsCisJCQkgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKKworc3Rh dGljIGlubGluZSB2b2lkIGt1bml0X2V4cGVjdF9iaW5hcnkoc3RydWN0IGt1bml0ICp0ZXN0LAor CQkJCSAgICAgICBsb25nIGxvbmcgbGVmdCwgY29uc3QgY2hhciAqbGVmdF9uYW1lLAorCQkJCSAg ICAgICBsb25nIGxvbmcgcmlnaHQsIGNvbnN0IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkJICAgICAg IGJvb2wgY29tcGFyZV9yZXN1bHQsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKmNvbXBhcmVfbmFt ZSwKKwkJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZSwKKwkJCQkgICAgICAgY29uc3QgY2hhciAq bGluZSkKK3sKKwlrdW5pdF9leHBlY3RfYmluYXJ5X21zZyh0ZXN0LAorCQkJCWxlZnQsIGxlZnRf bmFtZSwKKwkJCQlyaWdodCwgcmlnaHRfbmFtZSwKKwkJCQljb21wYXJlX3Jlc3VsdCwKKwkJCQlj b21wYXJlX25hbWUsCisJCQkJZmlsZSwKKwkJCQlsaW5lLAorCQkJCU5VTEwpOworfQorCit2b2lk IGt1bml0X2V4cGVjdF9wdHJfYmluYXJ5X21zZyhzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkJIHZv aWQgKmxlZnQsIGNvbnN0IGNoYXIgKmxlZnRfbmFtZSwKKwkJCQkgdm9pZCAqcmlnaHQsIGNvbnN0 IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkJIGJvb2wgY29tcGFyZV9yZXN1bHQsCisJCQkJIGNvbnN0 IGNoYXIgKmNvbXBhcmVfbmFtZSwKKwkJCQkgY29uc3QgY2hhciAqZmlsZSwKKwkJCQkgY29uc3Qg Y2hhciAqbGluZSwKKwkJCQkgY29uc3QgY2hhciAqZm10LCAuLi4pOworCitzdGF0aWMgaW5saW5l IHZvaWQga3VuaXRfZXhwZWN0X3B0cl9iaW5hcnkoc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCQkg ICB2b2lkICpsZWZ0LCBjb25zdCBjaGFyICpsZWZ0X25hbWUsCisJCQkJCSAgIHZvaWQgKnJpZ2h0 LCBjb25zdCBjaGFyICpyaWdodF9uYW1lLAorCQkJCQkgICBib29sIGNvbXBhcmVfcmVzdWx0LAor CQkJCQkgICBjb25zdCBjaGFyICpjb21wYXJlX25hbWUsCisJCQkJCSAgIGNvbnN0IGNoYXIgKmZp bGUsCisJCQkJCSAgIGNvbnN0IGNoYXIgKmxpbmUpCit7CisJa3VuaXRfZXhwZWN0X3B0cl9iaW5h cnlfbXNnKHRlc3QsCisJCQkJICAgIGxlZnQsIGxlZnRfbmFtZSwKKwkJCQkgICAgcmlnaHQsIHJp Z2h0X25hbWUsCisJCQkJICAgIGNvbXBhcmVfcmVzdWx0LAorCQkJCSAgICBjb21wYXJlX25hbWUs CisJCQkJICAgIGZpbGUsCisJCQkJICAgIGxpbmUsCisJCQkJICAgIE5VTEwpOworfQorCisvKgor ICogQSBmYWN0b3J5IG1hY3JvIGZvciBkZWZpbmluZyB0aGUgZXhwZWN0YXRpb25zIGZvciB0aGUg YmFzaWMgY29tcGFyaXNvbnMKKyAqIGRlZmluZWQgZm9yIHRoZSBidWlsdCBpbiB0eXBlcy4KKyAq CisgKiBVbmZvcnR1bmF0ZWx5LCB0aGVyZSBpcyBubyBjb21tb24gdHlwZSB0aGF0IGFsbCB0eXBl cyBjYW4gYmUgcHJvbW90ZWQgdG8gZm9yCisgKiB3aGljaCBhbGwgdGhlIGJpbmFyeSBvcGVyYXRv cnMgYmVoYXZlIHRoZSBzYW1lIHdheSBhcyBmb3IgdGhlIGFjdHVhbCB0eXBlcworICogKGZvciBl eGFtcGxlLCB0aGVyZSBpcyBubyB0eXBlIHRoYXQgbG9uZyBsb25nIGFuZCB1bnNpZ25lZCBsb25n IGxvbmcgY2FuCisgKiBib3RoIGJlIGNhc3QgdG8gd2hlcmUgdGhlIGNvbXBhcmlzb24gcmVzdWx0 IGlzIHByZXNlcnZlZCBmb3IgYWxsIHZhbHVlcykuIFNvCisgKiB0aGUgYmVzdCB3ZSBjYW4gZG8g aXMgZG8gdGhlIGNvbXBhcmlzb24gaW4gdGhlIG9yaWdpbmFsIHR5cGVzIGFuZCB0aGVuIGNvZXJj ZQorICogZXZlcnl0aGluZyB0byBsb25nIGxvbmcgZm9yIHByaW50aW5nOyB0aGlzIHdheSwgdGhl IGNvbXBhcmlzb24gYmVoYXZlcworICogY29ycmVjdGx5IGFuZCB0aGUgcHJpbnRlZCBvdXQgdmFs dWUgdXN1YWxseSBtYWtlcyBzZW5zZSB3aXRob3V0CisgKiBpbnRlcnByZXRhdGlvbiwgYnV0IGNh biBhbHdheXMgYmUgaW50ZXJwcmV0dGVkIHRvIGZpZ3VyZSBvdXQgdGhlIGFjdHVhbAorICogdmFs dWUuCisgKi8KKyNkZWZpbmUgS1VOSVRfRVhQRUNUX0JJTkFSWSh0ZXN0LCBsZWZ0LCBjb25kaXRp b24sIHJpZ2h0KSBkbyB7CQkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7 CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAg ICBcCisJX19rdW5pdF90eXBlY2hlY2soX19sZWZ0LCBfX3JpZ2h0KTsJCQkJICAgICAgIFwKKwlr dW5pdF9leHBlY3RfYmluYXJ5KHRlc3QsCQkJCQkgICAgICAgXAorCQkJICAgIChsb25nIGxvbmcp IF9fbGVmdCwgI2xlZnQsCQkJICAgICAgIFwKKwkJCSAgICAobG9uZyBsb25nKSBfX3JpZ2h0LCAj cmlnaHQsCQkgICAgICAgXAorCQkJICAgIF9fbGVmdCBjb25kaXRpb24gX19yaWdodCwgI2NvbmRp dGlvbiwJICAgICAgIFwKKwkJCSAgICBfX0ZJTEVfXywgX19zdHJpbmdpZnkoX19MSU5FX18pKTsJ CSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0VYUEVDVF9CSU5BUllfTVNH KHRlc3QsIGxlZnQsIGNvbmRpdGlvbiwgcmlnaHQsIGZtdCwgLi4uKSBkbyB7ICAgXAorCXR5cGVv ZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19y aWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJX19rdW5pdF90eXBlY2hlY2soX19sZWZ0LCBf X3JpZ2h0KTsJCQkJICAgICAgIFwKKwlrdW5pdF9leHBlY3RfYmluYXJ5X21zZyh0ZXN0LAkJCQkJ ICAgICAgIFwKKwkJCQkobG9uZyBsb25nKSBfX2xlZnQsICNsZWZ0LAkJICAgICAgIFwKKwkJCQko bG9uZyBsb25nKSBfX3JpZ2h0LCAjcmlnaHQsCQkgICAgICAgXAorCQkJCV9fbGVmdCBjb25kaXRp b24gX19yaWdodCwgI2NvbmRpdGlvbiwJICAgICAgIFwKKwkJCQlfX0ZJTEVfXywgX19zdHJpbmdp ZnkoX19MSU5FX18pLAkgICAgICAgXAorCQkJCWZtdCwgIyNfX1ZBX0FSR1NfXyk7CQkJICAgICAg IFwKK30gd2hpbGUgKDApCisKKy8qCisgKiBKdXN0IGxpa2UgS1VOSVRfRVhQRUNUX0JJTkFSWSwg YnV0IGZvciBjb21wYXJpbmcgcG9pbnRlciB0eXBlcy4KKyAqLworI2RlZmluZSBLVU5JVF9FWFBF Q1RfUFRSX0JJTkFSWSh0ZXN0LCBsZWZ0LCBjb25kaXRpb24sIHJpZ2h0KSBkbyB7CSAgICAgICBc CisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9IChsZWZ0KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJp Z2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJCQkJICAgICAgIFwKKwlfX2t1bml0X3R5cGVjaGVjayhf X2xlZnQsIF9fcmlnaHQpOwkJCQkgICAgICAgXAorCWt1bml0X2V4cGVjdF9wdHJfYmluYXJ5KHRl c3QsCQkJCQkgICAgICAgXAorCQkJICAgICh2b2lkICopIF9fbGVmdCwgI2xlZnQsCQkJICAgICAg IFwKKwkJCSAgICAodm9pZCAqKSBfX3JpZ2h0LCAjcmlnaHQsCQkJICAgICAgIFwKKwkJCSAgICBf X2xlZnQgY29uZGl0aW9uIF9fcmlnaHQsICNjb25kaXRpb24sCSAgICAgICBcCisJCQkgICAgX19G SUxFX18sIF9fc3RyaW5naWZ5KF9fTElORV9fKSk7CQkgICAgICAgXAorfSB3aGlsZSAoMCkKKwor I2RlZmluZSBLVU5JVF9FWFBFQ1RfUFRSX0JJTkFSWV9NU0codGVzdCwgbGVmdCwgY29uZGl0aW9u LCByaWdodCwgZm10LCAuLi4pICAgIFwKK2RvIHsJCQkJCQkJCQkgICAgICAgXAorCXR5cGVvZihs ZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdo dCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJX19rdW5pdF90eXBlY2hlY2soX19sZWZ0LCBfX3Jp Z2h0KTsJCQkJICAgICAgIFwKKwlrdW5pdF9leHBlY3RfcHRyX2JpbmFyeV9tc2codGVzdCwJCQkJ ICAgICAgIFwKKwkJCQkgICAgKHZvaWQgKikgX19sZWZ0LCAjbGVmdCwJCSAgICAgICBcCisJCQkJ ICAgICh2b2lkICopIF9fcmlnaHQsICNyaWdodCwJCSAgICAgICBcCisJCQkJICAgIF9fbGVmdCBj b25kaXRpb24gX19yaWdodCwgI2NvbmRpdGlvbiwgICAgICBcCisJCQkJICAgIF9fRklMRV9fLCBf X3N0cmluZ2lmeShfX0xJTkVfXyksCSAgICAgICBcCisJCQkJICAgIGZtdCwgIyNfX1ZBX0FSR1Nf Xyk7CQkgICAgICAgXAorfSB3aGlsZSAoMCkKKworLyoqCisgKiBLVU5JVF9FWFBFQ1RfRVEoKSAt IFNldHMgYW4gZXhwZWN0YXRpb24gdGhhdCBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBlcXVhbC4KKyAq IEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkg ZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKiBAcmln aHQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcHJpbWl0aXZl IEMgdHlwZS4KKyAqCisgKiBTZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0 IEBsZWZ0IGFuZCBAcmlnaHQgZXZhbHVhdGUgdG8gYXJlCisgKiBlcXVhbC4gVGhpcyBpcyBzZW1h bnRpY2FsbHkgZXF1aXZhbGVudCB0bworICogS1VOSVRfRVhQRUNUX1RSVUUoQHRlc3QsIChAbGVm dCkgPT0gKEByaWdodCkpLiBTZWUgS1VOSVRfRVhQRUNUX1RSVUUoKSBmb3IKKyAqIG1vcmUgaW5m b3JtYXRpb24uCisgKi8KKyNkZWZpbmUgS1VOSVRfRVhQRUNUX0VRKHRlc3QsIGxlZnQsIHJpZ2h0 KSBcCisJCUtVTklUX0VYUEVDVF9CSU5BUlkodGVzdCwgbGVmdCwgPT0sIHJpZ2h0KQorCisjZGVm aW5lIEtVTklUX0VYUEVDVF9FUV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAg ICAgIFwKKwkJS1VOSVRfRVhQRUNUX0JJTkFSWV9NU0codGVzdCwJCQkJICAgICAgIFwKKwkJCQkJ bGVmdCwJCQkJICAgICAgIFwKKwkJCQkJPT0sCQkJCSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkg ICAgICAgXAorCQkJCQlmbXQsCQkJCSAgICAgICBcCisJCQkJCSMjX19WQV9BUkdTX18pCisKKy8q KgorICogS1VOSVRfRVhQRUNUX1BUUl9FUSgpIC0gRXhwZWN0cyB0aGF0IHBvaW50ZXJzIEBsZWZ0 IGFuZCBAcmlnaHQgYXJlIGVxdWFsLgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0 LgorICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEg cG9pbnRlci4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0 ZXMgdG8gYSBwb2ludGVyLgorICoKKyAqIFNldHMgYW4gZXhwZWN0YXRpb24gdGhhdCB0aGUgdmFs dWVzIHRoYXQgQGxlZnQgYW5kIEByaWdodCBldmFsdWF0ZSB0byBhcmUKKyAqIGVxdWFsLiBUaGlz IGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvCisgKiBLVU5JVF9FWFBFQ1RfVFJVRShAdGVz dCwgKEBsZWZ0KSA9PSAoQHJpZ2h0KSkuIFNlZSBLVU5JVF9FWFBFQ1RfVFJVRSgpIGZvcgorICog bW9yZSBpbmZvcm1hdGlvbi4KKyAqLworI2RlZmluZSBLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3Qs IGxlZnQsIHJpZ2h0KSBcCisJCUtVTklUX0VYUEVDVF9QVFJfQklOQVJZKHRlc3QsIGxlZnQsID09 LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9FWFBFQ1RfUFRSX0VRX01TRyh0ZXN0LCBsZWZ0LCBy aWdodCwgZm10LCAuLi4pCQkgICAgICAgXAorCQlLVU5JVF9FWFBFQ1RfUFRSX0JJTkFSWV9NU0co dGVzdCwJCQkgICAgICAgXAorCQkJCQkgICAgbGVmdCwJCQkgICAgICAgXAorCQkJCQkgICAgPT0s CQkJCSAgICAgICBcCisJCQkJCSAgICByaWdodCwJCQkgICAgICAgXAorCQkJCQkgICAgZm10LAkJ CSAgICAgICBcCisJCQkJCSAgICAjI19fVkFfQVJHU19fKQorCisvKioKKyAqIEtVTklUX0VYUEVD VF9ORSgpIC0gQW4gZXhwZWN0YXRpb24gdGhhdCBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBub3QgZXF1 YWwuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJi aXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgor ICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHBy aW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0IHRoZSB2YWx1 ZXMgdGhhdCBAbGVmdCBhbmQgQHJpZ2h0IGV2YWx1YXRlIHRvIGFyZSBub3QKKyAqIGVxdWFsLiBU aGlzIGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvCisgKiBLVU5JVF9FWFBFQ1RfVFJVRShA dGVzdCwgKEBsZWZ0KSAhPSAoQHJpZ2h0KSkuIFNlZSBLVU5JVF9FWFBFQ1RfVFJVRSgpIGZvcgor ICogbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworI2RlZmluZSBLVU5JVF9FWFBFQ1RfTkUodGVzdCwg bGVmdCwgcmlnaHQpIFwKKwkJS1VOSVRfRVhQRUNUX0JJTkFSWSh0ZXN0LCBsZWZ0LCAhPSwgcmln aHQpCisKKyNkZWZpbmUgS1VOSVRfRVhQRUNUX05FX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10 LCAuLi4pCQkgICAgICAgXAorCQlLVU5JVF9FWFBFQ1RfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAg ICAgXAorCQkJCQlsZWZ0LAkJCQkgICAgICAgXAorCQkJCQkhPSwJCQkJICAgICAgIFwKKwkJCQkJ cmlnaHQsCQkJCSAgICAgICBcCisJCQkJCWZtdCwJCQkJICAgICAgIFwKKwkJCQkJIyNfX1ZBX0FS R1NfXykKKworLyoqCisgKiBLVU5JVF9FWFBFQ1RfUFRSX05FKCkgLSBFeHBlY3RzIHRoYXQgcG9p bnRlcnMgQGxlZnQgYW5kIEByaWdodCBhcmUgbm90IGVxdWFsLgorICogQHRlc3Q6IFRoZSB0ZXN0 IGNvbnRleHQgb2JqZWN0LgorICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQg ZXZhbHVhdGVzIHRvIGEgcG9pbnRlci4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Np b24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwb2ludGVyLgorICoKKyAqIFNldHMgYW4gZXhwZWN0YXRp b24gdGhhdCB0aGUgdmFsdWVzIHRoYXQgQGxlZnQgYW5kIEByaWdodCBldmFsdWF0ZSB0byBhcmUg bm90CisgKiBlcXVhbC4gVGhpcyBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bworICogS1VO SVRfRVhQRUNUX1RSVUUoQHRlc3QsIChAbGVmdCkgIT0gKEByaWdodCkpLiBTZWUgS1VOSVRfRVhQ RUNUX1RSVUUoKSBmb3IKKyAqIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKyNkZWZpbmUgS1VOSVRf RVhQRUNUX1BUUl9ORSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9FWFBFQ1RfUFRSX0JJ TkFSWSh0ZXN0LCBsZWZ0LCAhPSwgcmlnaHQpCisKKyNkZWZpbmUgS1VOSVRfRVhQRUNUX1BUUl9O RV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAgICAgIFwKKwkJS1VOSVRfRVhQ RUNUX1BUUl9CSU5BUllfTVNHKHRlc3QsCQkJICAgICAgIFwKKwkJCQkJICAgIGxlZnQsCQkJICAg ICAgIFwKKwkJCQkJICAgICE9LAkJCQkgICAgICAgXAorCQkJCQkgICAgcmlnaHQsCQkJICAgICAg IFwKKwkJCQkJICAgIGZtdCwJCQkgICAgICAgXAorCQkJCQkgICAgIyNfX1ZBX0FSR1NfXykKKwor LyoqCisgKiBLVU5JVF9FWFBFQ1RfTFQoKSAtIEFuIGV4cGVjdGF0aW9uIHRoYXQgQGxlZnQgaXMg bGVzcyB0aGFuIEByaWdodC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAq IEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1p dGl2ZSBDIHR5cGUuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZh bHVhdGVzIHRvIGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqCisgKiBTZXRzIGFuIGV4cGVjdGF0aW9u IHRoYXQgdGhlIHZhbHVlIHRoYXQgQGxlZnQgZXZhbHVhdGVzIHRvIGlzIGxlc3MgdGhhbiB0aGUK KyAqIHZhbHVlIHRoYXQgQHJpZ2h0IGV2YWx1YXRlcyB0by4gVGhpcyBpcyBzZW1hbnRpY2FsbHkg ZXF1aXZhbGVudCB0bworICogS1VOSVRfRVhQRUNUX1RSVUUoQHRlc3QsIChAbGVmdCkgPCAoQHJp Z2h0KSkuIFNlZSBLVU5JVF9FWFBFQ1RfVFJVRSgpIGZvcgorICogbW9yZSBpbmZvcm1hdGlvbi4K KyAqLworI2RlZmluZSBLVU5JVF9FWFBFQ1RfTFQodGVzdCwgbGVmdCwgcmlnaHQpIFwKKwkJS1VO SVRfRVhQRUNUX0JJTkFSWSh0ZXN0LCBsZWZ0LCA8LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9F WFBFQ1RfTFRfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtV TklUX0VYUEVDVF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAg ICAgICBcCisJCQkJCTwsCQkJCSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkgICAgICAgXAorCQkJ CQlmbXQsCQkJCSAgICAgICBcCisJCQkJCSMjX19WQV9BUkdTX18pCisKKy8qKgorICogS1VOSVRf RVhQRUNUX0xFKCkgLSBFeHBlY3RzIHRoYXQgQGxlZnQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRv IEByaWdodC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBh biBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5 cGUuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRv IGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqCisgKiBTZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgdGhl IHZhbHVlIHRoYXQgQGxlZnQgZXZhbHVhdGVzIHRvIGlzIGxlc3MgdGhhbiBvcgorICogZXF1YWwg dG8gdGhlIHZhbHVlIHRoYXQgQHJpZ2h0IGV2YWx1YXRlcyB0by4gU2VtYW50aWNhbGx5IHRoaXMg aXMgZXF1aXZhbGVudAorICogdG8gS1VOSVRfRVhQRUNUX1RSVUUoQHRlc3QsIChAbGVmdCkgPD0g KEByaWdodCkpLiBTZWUgS1VOSVRfRVhQRUNUX1RSVUUoKSBmb3IKKyAqIG1vcmUgaW5mb3JtYXRp b24uCisgKi8KKyNkZWZpbmUgS1VOSVRfRVhQRUNUX0xFKHRlc3QsIGxlZnQsIHJpZ2h0KSBcCisJ CUtVTklUX0VYUEVDVF9CSU5BUlkodGVzdCwgbGVmdCwgPD0sIHJpZ2h0KQorCisjZGVmaW5lIEtV TklUX0VYUEVDVF9MRV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAgICAgIFwK KwkJS1VOSVRfRVhQRUNUX0JJTkFSWV9NU0codGVzdCwJCQkJICAgICAgIFwKKwkJCQkJbGVmdCwJ CQkJICAgICAgIFwKKwkJCQkJPD0sCQkJCSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkgICAgICAg XAorCQkJCQlmbXQsCQkJCSAgICAgICBcCisJCQkJCSMjX19WQV9BUkdTX18pCisKKy8qKgorICog S1VOSVRfRVhQRUNUX0dUKCkgLSBBbiBleHBlY3RhdGlvbiB0aGF0IEBsZWZ0IGlzIGdyZWF0ZXIg dGhhbiBAcmlnaHQuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVm dDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUg QyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRl cyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0 IHRoZSB2YWx1ZSB0aGF0IEBsZWZ0IGV2YWx1YXRlcyB0byBpcyBncmVhdGVyIHRoYW4KKyAqIHRo ZSB2YWx1ZSB0aGF0IEByaWdodCBldmFsdWF0ZXMgdG8uIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVx dWl2YWxlbnQgdG8KKyAqIEtVTklUX0VYUEVDVF9UUlVFKEB0ZXN0LCAoQGxlZnQpID4gKEByaWdo dCkpLiBTZWUgS1VOSVRfRVhQRUNUX1RSVUUoKSBmb3IKKyAqIG1vcmUgaW5mb3JtYXRpb24uCisg Ki8KKyNkZWZpbmUgS1VOSVRfRVhQRUNUX0dUKHRlc3QsIGxlZnQsIHJpZ2h0KSBcCisJCUtVTklU X0VYUEVDVF9CSU5BUlkodGVzdCwgbGVmdCwgPiwgcmlnaHQpCisKKyNkZWZpbmUgS1VOSVRfRVhQ RUNUX0dUX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4pCQkgICAgICAgXAorCQlLVU5J VF9FWFBFQ1RfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAorCQkJCQlsZWZ0LAkJCQkgICAg ICAgXAorCQkJCQk+LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJCQkJICAgICAgIFwKKwkJCQkJ Zm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQorCisvKioKKyAqIEtVTklUX0VY UEVDVF9HRSgpIC0gRXhwZWN0cyB0aGF0IEBsZWZ0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0 byBAcmlnaHQuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDog YW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0 eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0 byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0IHRo ZSB2YWx1ZSB0aGF0IEBsZWZ0IGV2YWx1YXRlcyB0byBpcyBncmVhdGVyIHRoYW4KKyAqIHRoZSB2 YWx1ZSB0aGF0IEByaWdodCBldmFsdWF0ZXMgdG8uIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2 YWxlbnQgdG8KKyAqIEtVTklUX0VYUEVDVF9UUlVFKEB0ZXN0LCAoQGxlZnQpID49IChAcmlnaHQp KS4gU2VlIEtVTklUX0VYUEVDVF9UUlVFKCkgZm9yCisgKiBtb3JlIGluZm9ybWF0aW9uLgorICov CisjZGVmaW5lIEtVTklUX0VYUEVDVF9HRSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9F WFBFQ1RfQklOQVJZKHRlc3QsIGxlZnQsID49LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9FWFBF Q1RfR0VfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklU X0VYUEVDVF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAgICAg ICBcCisJCQkJCT49LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJCQkJICAgICAgIFwKKwkJCQkJ Zm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQorCisvKioKKyAqIEtVTklUX0VY UEVDVF9TVFJFUSgpIC0gRXhwZWN0cyB0aGF0IHN0cmluZ3MgQGxlZnQgYW5kIEByaWdodCBhcmUg ZXF1YWwuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4g YXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBudWxsIHRlcm1pbmF0ZWQg c3RyaW5nLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRl cyB0byBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlv biB0aGF0IHRoZSB2YWx1ZXMgdGhhdCBAbGVmdCBhbmQgQHJpZ2h0IGV2YWx1YXRlIHRvIGFyZQor ICogZXF1YWwuIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8KKyAqIEtVTklUX0VY UEVDVF9UUlVFKEB0ZXN0LCAhc3RyY21wKChAbGVmdCksIChAcmlnaHQpKSkuIFNlZSBLVU5JVF9F WFBFQ1RfVFJVRSgpCisgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworI2RlZmluZSBLVU5J VF9FWFBFQ1RfU1RSRVEodGVzdCwgbGVmdCwgcmlnaHQpIGRvIHsJCQkgICAgICAgXAorCXN0cnVj dCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRlc3QpOwkgICAg ICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVv ZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAg XAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJFeHBlY3RlZCAiICNsZWZ0ICIgPT0gIiAj cmlnaHQgIiwgYnV0XG4iKTsgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMg PT0gJXNcbiIsICNsZWZ0LCBfX2xlZnQpOwkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19z dHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNyaWdodCwgX19yaWdodCk7CSAgICAgICBcCisJCQkJ CQkJCQkgICAgICAgXAorCUtVTklUX0VYUEVDVF9FTkQodGVzdCwgIXN0cmNtcChsZWZ0LCByaWdo dCksIF9fc3RyZWFtKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0VY UEVDVF9TVFJFUV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKSBkbyB7CSAgICAgICBc CisJc3RydWN0IGt1bml0X3N0cmVhbSAqX19zdHJlYW0gPSBLVU5JVF9FWFBFQ1RfU1RBUlQodGVz dCk7CSAgICAgICBcCisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9IChsZWZ0KTsJCQkJCSAgICAgICBc CisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJCQkJICAgICAgIFwKKwkJCQkJCQkJ CSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIkV4cGVjdGVkICIgI2xlZnQg IiA9PSAiICNyaWdodCAiLCBidXRcbiIpOyBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwg Ilx0XHQlcyA9PSAlc1xuIiwgI2xlZnQsIF9fbGVmdCk7CSAgICAgICBcCisJa3VuaXRfc3RyZWFt X2FkZChfX3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI3JpZ2h0LCBfX3JpZ2h0KTsJICAgICAg IFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdTX18pOwkJCSAg ICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0VYUEVDVF9FTkQodGVzdCwgIXN0cmNt cChsZWZ0LCByaWdodCksIF9fc3RyZWFtKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisvKioK KyAqIEtVTklUX0VYUEVDVF9TVFJORVEoKSAtIEV4cGVjdHMgdGhhdCBzdHJpbmdzIEBsZWZ0IGFu ZCBAcmlnaHQgYXJlIG5vdCBlcXVhbC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVj dC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBh IG51bGwgdGVybWluYXRlZCBzdHJpbmcuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNz aW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZy4KKyAqCisgKiBT ZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQg ZXZhbHVhdGUgdG8gYXJlCisgKiBub3QgZXF1YWwuIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2 YWxlbnQgdG8KKyAqIEtVTklUX0VYUEVDVF9UUlVFKEB0ZXN0LCBzdHJjbXAoKEBsZWZ0KSwgKEBy aWdodCkpKS4gU2VlIEtVTklUX0VYUEVDVF9UUlVFKCkKKyAqIGZvciBtb3JlIGluZm9ybWF0aW9u LgorICovCisjZGVmaW5lIEtVTklUX0VYUEVDVF9TVFJORVEodGVzdCwgbGVmdCwgcmlnaHQpIGRv IHsJCQkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfRVhQ RUNUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7 CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAg ICBcCisJCQkJCQkJCQkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJFeHBl Y3RlZCAiICNsZWZ0ICIgIT0gIiAjcmlnaHQgIiwgYnV0XG4iKTsgXAorCWt1bml0X3N0cmVhbV9h ZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNsZWZ0LCBfX2xlZnQpOwkgICAgICAgXAor CWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNyaWdodCwgX19y aWdodCk7CSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0VYUEVDVF9FTkQodGVz dCwgc3RyY21wKGxlZnQsIHJpZ2h0KSwgX19zdHJlYW0pOwkJICAgICAgIFwKK30gd2hpbGUgKDAp CisKKyNkZWZpbmUgS1VOSVRfRVhQRUNUX1NUUk5FUV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZt dCwgLi4uKSBkbyB7CSAgICAgICBcCisJc3RydWN0IGt1bml0X3N0cmVhbSAqX19zdHJlYW0gPSBL VU5JVF9FWFBFQ1RfU1RBUlQodGVzdCk7CSAgICAgICBcCisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9 IChsZWZ0KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJ CQkJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVh bSwgIkV4cGVjdGVkICIgI2xlZnQgIiAhPSAiICNyaWdodCAiLCBidXRcbiIpOyBcCisJa3VuaXRf c3RyZWFtX2FkZChfX3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI2xlZnQsIF9fbGVmdCk7CSAg ICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI3Jp Z2h0LCBfX3JpZ2h0KTsJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQs ICMjX19WQV9BUkdTX18pOwkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0VY UEVDVF9FTkQodGVzdCwgc3RyY21wKGxlZnQsIHJpZ2h0KSwgX19zdHJlYW0pOwkJICAgICAgIFwK K30gd2hpbGUgKDApCisKKy8qKgorICogS1VOSVRfRVhQRUNUX05PVF9FUlJfT1JfTlVMTCgpIC0g RXhwZWN0cyB0aGF0IEBwdHIgaXMgbm90IG51bGwgYW5kIG5vdCBlcnIuCisgKiBAdGVzdDogVGhl IHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAcHRyOiBhbiBhcmJpdHJhcnkgcG9pbnRlci4KKyAq CisgKiBTZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHZhbHVlIHRoYXQgQHB0ciBldmFsdWF0 ZXMgdG8gaXMgbm90IG51bGwgYW5kIG5vdAorICogYW4gZXJybm8gc3RvcmVkIGluIGEgcG9pbnRl ci4gVGhpcyBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bworICogS1VOSVRfRVhQRUNUX1RS VUUoQHRlc3QsICFJU19FUlJfT1JfTlVMTChAcHRyKSkuIFNlZSBLVU5JVF9FWFBFQ1RfVFJVRSgp IGZvcgorICogbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworI2RlZmluZSBLVU5JVF9FWFBFQ1RfTk9U X0VSUl9PUl9OVUxMKHRlc3QsIHB0cikgZG8gewkJCSAgICAgICBcCisJc3RydWN0IGt1bml0X3N0 cmVhbSAqX19zdHJlYW0gPSBLVU5JVF9FWFBFQ1RfU1RBUlQodGVzdCk7CSAgICAgICBcCisJdHlw ZW9mKHB0cikgX19wdHIgPSAocHRyKTsJCQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAor CWlmICghX19wdHIpCQkJCQkJCSAgICAgICBcCisJCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0s CQkJCSAgICAgICBcCisJCQkgICAgICAiRXhwZWN0ZWQgIiAjcHRyICIgaXMgbm90IG51bGwsIGJ1 dCBpc1xuIik7ICAgICAgXAorCWlmIChJU19FUlIoX19wdHIpKQkJCQkJCSAgICAgICBcCisJCWt1 bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sCQkJCSAgICAgICBcCisJCQkgICAgICAiRXhwZWN0ZWQg IiAjcHRyICIgaXMgbm90IGVycm9yLCBidXQgaXM6ICVsZCIsICAgXAorCQkJICAgICAgUFRSX0VS UihfX3B0cikpOwkJCQkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlLVU5JVF9FWFBFQ1Rf RU5EKHRlc3QsICFJU19FUlJfT1JfTlVMTChfX3B0ciksIF9fc3RyZWFtKTsJICAgICAgIFwKK30g d2hpbGUgKDApCisKKyNkZWZpbmUgS1VOSVRfRVhQRUNUX05PVF9FUlJfT1JfTlVMTF9NU0codGVz dCwgcHRyLCBmbXQsIC4uLikgZG8gewkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9f c3RyZWFtID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCXR5cGVvZihwdHIp IF9fcHRyID0gKHB0cik7CQkJCQkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlpZiAoIV9f cHRyKSB7CQkJCQkJCSAgICAgICBcCisJCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sCQkJCSAg ICAgICBcCisJCQkgICAgICAiRXhwZWN0ZWQgIiAjcHRyICIgaXMgbm90IG51bGwsIGJ1dCBpc1xu Iik7ICAgICAgXAorCQlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdT X18pOwkJICAgICAgIFwKKwl9CQkJCQkJCQkgICAgICAgXAorCWlmIChJU19FUlIoX19wdHIpKSB7 CQkJCQkJICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwJCQkJICAgICAgIFwK KwkJCSAgICAgICJFeHBlY3RlZCAiICNwdHIgIiBpcyBub3QgZXJyb3IsIGJ1dCBpczogJWxkIiwg ICBcCisJCQkgICAgICBQVFJfRVJSKF9fcHRyKSk7CQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAg ICAgXAorCQlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdTX18pOwkJ ICAgICAgIFwKKwl9CQkJCQkJCQkgICAgICAgXAorCUtVTklUX0VYUEVDVF9FTkQodGVzdCwgIUlT X0VSUl9PUl9OVUxMKF9fcHRyKSwgX19zdHJlYW0pOwkgICAgICAgXAorfSB3aGlsZSAoMCkKKwog I2VuZGlmIC8qIF9LVU5JVF9URVNUX0ggKi8KZGlmZiAtLWdpdCBhL2t1bml0L3Rlc3QuYyBiL2t1 bml0L3Rlc3QuYwppbmRleCBmZGFiMDdiYjBiNTI5Li4xZjk0YTkyMjRiMDNlIDEwMDY0NAotLS0g YS9rdW5pdC90ZXN0LmMKKysrIGIva3VuaXQvdGVzdC5jCkBAIC0yODcsMyArMjg3LDY5IEBAIHZv aWQga3VuaXRfcHJpbnRrKGNvbnN0IGNoYXIgKmxldmVsLAogCiAJdmFfZW5kKGFyZ3MpOwogfQor Cit2b2lkIGt1bml0X2V4cGVjdF9iaW5hcnlfbXNnKHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJCSAg ICAgbG9uZyBsb25nIGxlZnQsIGNvbnN0IGNoYXIgKmxlZnRfbmFtZSwKKwkJCSAgICAgbG9uZyBs b25nIHJpZ2h0LCBjb25zdCBjaGFyICpyaWdodF9uYW1lLAorCQkJICAgICBib29sIGNvbXBhcmVf cmVzdWx0LAorCQkJICAgICBjb25zdCBjaGFyICpjb21wYXJlX25hbWUsCisJCQkgICAgIGNvbnN0 IGNoYXIgKmZpbGUsCisJCQkgICAgIGNvbnN0IGNoYXIgKmxpbmUsCisJCQkgICAgIGNvbnN0IGNo YXIgKmZtdCwgLi4uKQoreworCXN0cnVjdCBrdW5pdF9zdHJlYW0gKnN0cmVhbSA9IGt1bml0X2V4 cGVjdF9zdGFydCh0ZXN0LCBmaWxlLCBsaW5lKTsKKwlzdHJ1Y3QgdmFfZm9ybWF0IHZhZjsKKwl2 YV9saXN0IGFyZ3M7CisKKwlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwKKwkJCSAiRXhwZWN0ZWQg JXMgJXMgJXMsIGJ1dFxuIiwKKwkJCSBsZWZ0X25hbWUsIGNvbXBhcmVfbmFtZSwgcmlnaHRfbmFt ZSk7CisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJcdFx0JXMgPT0gJWxsZFxuIiwgbGVmdF9u YW1lLCBsZWZ0KTsKKwlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwgIlx0XHQlcyA9PSAlbGxkIiwg cmlnaHRfbmFtZSwgcmlnaHQpOworCisJaWYgKGZtdCkgeworCQl2YV9zdGFydChhcmdzLCBmbXQp OworCisJCXZhZi5mbXQgPSBmbXQ7CisJCXZhZi52YSA9ICZhcmdzOworCisJCWt1bml0X3N0cmVh bV9hZGQoc3RyZWFtLCAiXG4lcFYiLCAmdmFmKTsKKworCQl2YV9lbmQoYXJncyk7CisJfQorCisJ a3VuaXRfZXhwZWN0X2VuZCh0ZXN0LCBjb21wYXJlX3Jlc3VsdCwgc3RyZWFtKTsKK30KKwordm9p ZCBrdW5pdF9leHBlY3RfcHRyX2JpbmFyeV9tc2coc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCSB2 b2lkICpsZWZ0LCBjb25zdCBjaGFyICpsZWZ0X25hbWUsCisJCQkJIHZvaWQgKnJpZ2h0LCBjb25z dCBjaGFyICpyaWdodF9uYW1lLAorCQkJCSBib29sIGNvbXBhcmVfcmVzdWx0LAorCQkJCSBjb25z dCBjaGFyICpjb21wYXJlX25hbWUsCisJCQkJIGNvbnN0IGNoYXIgKmZpbGUsCisJCQkJIGNvbnN0 IGNoYXIgKmxpbmUsCisJCQkJIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXN0cnVjdCBrdW5p dF9zdHJlYW0gKnN0cmVhbSA9IGt1bml0X2V4cGVjdF9zdGFydCh0ZXN0LCBmaWxlLCBsaW5lKTsK KwlzdHJ1Y3QgdmFfZm9ybWF0IHZhZjsKKwl2YV9saXN0IGFyZ3M7CisKKwlrdW5pdF9zdHJlYW1f YWRkKHN0cmVhbSwKKwkJCSAiRXhwZWN0ZWQgJXMgJXMgJXMsIGJ1dFxuIiwKKwkJCSBsZWZ0X25h bWUsIGNvbXBhcmVfbmFtZSwgcmlnaHRfbmFtZSk7CisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0s ICJcdFx0JXMgPT0gJXBLXG4iLCBsZWZ0X25hbWUsIGxlZnQpOworCWt1bml0X3N0cmVhbV9hZGQo c3RyZWFtLCAiXHRcdCVzID09ICVwSyIsIHJpZ2h0X25hbWUsIHJpZ2h0KTsKKworCWlmIChmbXQp IHsKKwkJdmFfc3RhcnQoYXJncywgZm10KTsKKworCQl2YWYuZm10ID0gZm10OworCQl2YWYudmEg PSAmYXJnczsKKworCQlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwgIlxuJXBWIiwgJnZhZik7CisK KwkJdmFfZW5kKGFyZ3MpOworCX0KKworCWt1bml0X2V4cGVjdF9lbmQodGVzdCwgY29tcGFyZV9y ZXN1bHQsIHN0cmVhbSk7Cit9Ci0tIAoyLjIyLjAuNTEwLmcyNjRmMmM4MTdhLWdvb2cKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==